我正在尝试为我的 python 应用程序运行一些测试,但我无法正确设置路径,以便我的
test.py
可以找到它。
我的申请结构如下:
repo/src/main/python/main_module
repo/tests/test.py
我的
test.py
看起来像这样:
import sys
sys.path.append(os.path.normpath('C:/repo/src/main/python'))
import main_module
现在我想在 Azure Pipelines 中测试代码,所以首先我将存储库复制到位:
- powershell: |
cd C:/
mkdir repo
cp -r -v $(src.repo)/* C:/repo/
condition: eq( variables['Agent.OS'], 'Windows_NT' )
之后我使用
tree
来测试所有内容是否都已正确复制。
然后我只需通过调用运行测试脚本:
python C:/repo/tests/test.py
但这给了我一个
ModuleNotFoundError
。
我还尝试通过 PYTHONPATH 设置我的
main_module
的路径,但这也不起作用。
他们是我错过的东西还是 Azure Pipelines 中的错误?
与 Azure DevOps 支持人员交谈后,我现在知道我的问题目前是 DevOps-Pipelines 中的一个错误。
现在,我将在主模块旁边复制我的测试脚本,如果一切成功并且在构建应用程序之前删除它们。
要在 Linux 环境中使用 Azure 管道执行 python 脚本,我使用了“script:”
script: pythonpath=/repo/src/main/python python3 repo/tests/test.py
displayName: 'execute script python'
根据症状,我认为这是同一问题: Azure pipeline找不到用户创建的python模块
我已经通过以下解决方法解决了这个问题
在管道中包含一个脚本,将源代码移至新的 适当命名的目录,然后在那里进行测试。
有关完整详细信息和示例 YAML,请参阅我对其他问题的回答
这在我的 Azure Pipeline 中用作 bash 脚本,假设
path/to/src
包含您的用户定义模块:
echo "##vso[task.setvariable variable=PYTHONPATH;]$PYTHONPATH:$(Build.Repository.LocalPath)/path/to/src"
请注意,新的
PYTHONPATH
直到执行后续步骤才可用。