我有一个正在研究的python项目,我正在尝试用pytest和Jenkins实现测试。
我的目录结构如下:
project/
src/
__init__.py
hello.py
input.py
person.py
test/
test_hello.py
当我从项目目录运行pytest时,它工作正常。但是当我使用Jenkins时,我不断收到以下错误:
[-1_10-finish-basic-ci-setup-IIB3G6YENVYIQDST5MPMDBNVOZLYD6VSLP5ZCT6VUVQSNZJKGYEA] Running shell script
+ python src/hello.py true
Traceback (most recent call last):
File "src/hello.py", line 1, in <module>
import src.person as person
ImportError: No module named 'src'
我在一个docker容器中运行Jenkins,它会旋转另一个docker容器来测试我的项目。任何人都可以告诉我如何让它识别运行测试的src目录?
答案 0 :(得分:0)
我不确定我是否已正确识别您的问题(我希望您已经使用Google搜索此错误),但当我尝试使用cron运行我的python脚本时,我遇到了一个非常类似的异常。
我的解决方法是在文件的最开头添加它。因此,当您执行string myString = "{\"Lorem\":" + _config1 + "\",\"Ipsum\":" + _config2 + "\"}";
时,第一个事情正在运行。在python main.py
之后导入其他模块。它基本上将工作目录附加到pythonpath,因此Python可以从哪里运行它。有一些替代解决方案。这很难看,但它非常便携,你只需要复制。
sys.path...
您需要将一定数量的import sys, os
def get_abs_dir_for_module(*args):
return os.path.join(os.path.dirname(os.path.realpath(__file__)), *args)
repo_dir = get_abs_dir_for_module("..", "..")
sys.path.append(repo_dir)
传递给此功能。到处玩,让我知道它是否有效。