python-3.x - 未找到 Jenkins ImportError 模块
问题描述
我有这样的文件结构:
Main/
|----unit_tests
| |---test_main.py
| |---__init__.py
|--main.py
|--__init__.py
|--requirements.txt
test_main.py:
import unittest.mock
from main import MainFunction
from nose.tools import assert_is_not_none, assert_is_none, assert_equal
class TestMainLogic(unittest.case):
~~~ code here ~~~~
在 Pycharm 的 test_main.py 中运行我的单元测试时,一切都很好。但是,当我尝试在 Jenkins 设置中运行它时,我得到:
+ python3 unit_tests/test_main.py
Traceback (most recent call last):
File "unit_tests/test_main.py", line 4, in <module>
from main import MainFunction
ModuleNotFoundError: No module named 'main'
这是我的詹金斯文件:
pipeline
{
environment
{
PATH = "/home/jenkins/.local/bin:$PATH"
}
stages
{
stage('build')
{
steps
{
sh 'python3 --version'
sh 'wget https://bootstrap.pypa.io/get-pip.py'
sh 'python3 get-pip.py'
sh 'pip3 install -r requirements.txt'
echo 'build phase has finished'
}
}
stage('Lint')
{
steps
{
sh 'pylint unit_tests/test_main.py'
}
}
stage('test')
{
steps
{
sh 'python3 unit_tests/test_main.py'
}
post
{
always
{
cleanWs()
}
}
}
}
}
我已经关注了几个帖子,但我没有得到有效的答案。我试过:Jenkins 中的 Python 模块导入失败及其链接的答案。我无权通过 ssh 访问 Jenkins 服务器并找到路径,因此我需要一种在执行时设置它的方法。
解决方案
您需要在test_main.py
文件中使用绝对导入而不是相对导入。
在test_main.py
代替:
from main import MainFunction
# SOME CODE
和:
from Main.main import MainFunction
# SOME CODE
推荐阅读
- ssh - SSH Windows 10,找出什么版本
- esb - Transformers 不能循环遍历列表元素
- multithreading - 不覆盖*标准输入*可防止多线程
- python - Flutter / Dart 没有从本地托管的烧瓶 api 返回值
- mysql - 获得最后评论文章的最佳查询是什么?
- html - 相对于图像定位元素
- c++ - c++17中的双向静态值映射
- r - 在 R 中使用配方后如何对变量进行非规范化(反向转换)?
- javascript - 我为我的网站添加了一个 Lightbox jquery,但我想删除每次出现的蓝色边框
- nativescript - 如何使用在其详细信息页面上发生的更改立即更新母版页的组件?