我正在尝试使用Azure DevOps从python模块运行测试。我已经建立了一个管道构建来构建一个yml文件。 我收到一个错误,我的导入上的模块名称不正确,但是看起来好像不是在构建中设置了模块名称?
当我在本地运行此程序时,效果很好。
模块存储库文件结构:
api_check
api_check/auth
api_check/etc
api_check/__init__.py
我正在yml文件中使用以下命令运行测试: -脚本:| mkdir日志 pytest -m Smoke --junitxml = logs / test-results.xml --ENV = prod displayName:'使用pytest测试'
此步骤出现以下错误:
2018-10-11T21:51:02.9825682Z _______________________ ERROR collecting test_search.py ________________________
2018-10-11T21:51:02.9826322Z ImportError while importing test module '/home/vsts/work/1/s/test_search.py'.
2018-10-11T21:51:02.9826804Z Hint: make sure your test modules/packages have valid Python names.
2018-10-11T21:51:02.9827123Z Traceback:
2018-10-11T21:51:02.9827411Z test_search.py:12: in <module>
2018-10-11T21:51:02.9827745Z from api_check.auth import get_Token_UsernamePassword
2018-10-11T21:51:02.9828644Z E ModuleNotFoundError: No module named 'api_check'
是否需要添加一些内容以使构建识别api_check模块?我需要读一些构建变量吗?
编辑以获取更多信息-
我正在从yml文件从默认目录运行的任何目录运行此文件-根据调试日志,工作目录为/home/vsts/work/1/s
。
当我列出工作目录的内容时,我看到了模块的所有内容,我的仓库中的所有内容都在api_check
下。
所以,而不是我期望从回购回购中获得的收益:
$workingDirectory/api_check
$workingDirectory/api_check/auth
$workingDirectory/api_check/etc
$workingDirectory/api_check/__init__.py
它是:
$workingDirectory
$workingDirectory/auth
$workingDirectory/etc
$workingDirectory/__init__.py
因此似乎仅添加父目录api_check
并没有帮助,因为似乎没有api_check
目录。我是否可以设置一些管道设置,使其包含顶级文件夹api_check
?
答案 0 :(得分:0)
结果是,Azure扩展了存储库,以使存储库中的最高级别目录成为工作目录,而不是成为工作目录中的。
为了解决我的问题,我将模块移到了仓库中的第二级目录中。
例如,GitHub存储库布局:
$repo/api_check
$repo/api_check/auth
$repo/api_check/etc
$repo/api_check/__init__.py
成为
$workingDirectory/api_check
$workingDirectory/api_check/auth
$workingDirectory/api_check/etc
$workingDirectory/api_check/__init__.py
也许有一种方法可以使Azure将回购扩展为工作目录中的子目录,但是我没有找到它。
答案 1 :(得分:0)
您只需要使用以下命令执行测试:(使用python -m)
import Button from '@material-ui/core/Button'
<div>
<div>Log into APP</div>
<Button>Test</Button>
</div>
答案 2 :(得分:0)
您可以尝试删除根目录下的__init__.py
,这应该可以解决问题。