ImportError-测试在CircleCI上失败,但在本地通过

时间:2018-07-10 18:07:29

标签: python python-3.x pytest circleci

恰如标题所述-我的文件夹结构是这样的:

venv/  
__init__.py  
.circleci/  
    config.yml  
Dockerfile   
docker-compose.yml  
config.py  
requirements.txt  
src/  
    __init__.py  
    other_scripts.py  
tests/  
    __init__.py  
    test_a.py  
    test_b.py  

测试文件有from config import *行。从本地根目录运行$ pytest或通过bash shell运行到容器中(在virtualenv内),按预期方式运行,但是在CircleCI上,上述代码行的ImportError: No module named 'config'构建失败。我正在使用python3.5和circleCI 2.0。

谢谢!

1 个答案:

答案 0 :(得分:1)

如注释中所建议:从根目录中删除Sub TransferData() Dim lr As Long Application.ScreenUpdating = False Sheet3.Cells.ClearContents With Sheet2.[A1].CurrentRegion .AutoFilter 42, "Y" .EntireRow.Copy Sheet3.[A1] .AutoFilter End With lr = Sheet3.Range("E" & Rows.Count).End(xlUp).Row If lr <= 1 Then Exit Sub Sheet3.Range("BA2:BA" & lr) = "=COUNTIF(HistoricalSVOS!$B:$B, DefectRate!$E:$E)" Sheet3.Range("BB2").FormulaArray = "=SUMPRODUCT((($E$2:$E$226=E2))/COUNTIFS($E$2:$E$226,$E$2:$E$226&"""",$J$2:$J$226,$J$2:$J$226&""""))" Sheet3.Range("BB2:BB" & lr).FillDown Application.CutCopyMode = False Application.ScreenUpdating = True End Sub ,添加一个名为__init__.py的空文件。

有关conftest.py技巧的解释,请查看我对类似问题的其他答案,例如pytest cannot find moduleUsing pytest with a src layer。简而言之,添加conftest.py会将项目目录添加到conftest.py,因此sys.path模块可以导入。

至于删除config文件,它与错误无关,只是不属于该错误。当然,您不想将项目目录制作为软件包,因此尽早删除不需要的init模块将为您节省日后的意外错误。