gpt4 book ai didi

python - Travis 无法在 Python 3 变体中导入我的测试模块

转载 作者:行者123 更新时间:2023-11-28 19:14:07 25 4
gpt4 key购买 nike

我正在尝试针对 Travis CI 上的多个 Python 变体测试我的应用程序。在 Python 2.7 中,测试按预期通过。然而,在 Python 3.4 中我得到了这个回溯

ERROR: tests.test_mymodule (unittest.loader.ModuleImportFailure)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/opt/python/3.4.2/lib/python3.4/unittest/case.py", line 58, in testPartExecutor
yield
File "/opt/python/3.4.2/lib/python3.4/unittest/case.py", line 577, in run
testMethod()
File "/opt/python/3.4.2/lib/python3.4/unittest/loader.py", line 32, in testFailure
raise exception
ImportError: Failed to import test module: tests.test_mymodule
Traceback (most recent call last):
File "/opt/python/3.4.2/lib/python3.4/unittest/loader.py", line 312, in _find_tests
module = self._get_module_from_name(name)
File "/opt/python/3.4.2/lib/python3.4/unittest/loader.py", line 290, in _get_module_from_name
__import__(name)
File "/home/travis/build/MyGitHubName/mymodule/tests/test_mymodule.py", line 8, in <module>
from mymodule import mymodule
File "/home/travis/build/MyGitHubName/mymodule/mymodule/__init__.py", line 1, in <module>
from mymodule import MyModule
ImportError: cannot import name 'MyModule'

在 Python 3.5 中我得到这个(与 3.4 相似,但不完全相同)

ERROR: mymodule (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: mymodule
Traceback (most recent call last):
File "/opt/python/3.5.0/lib/python3.5/unittest/loader.py", line 462, in _find_test_path
package = self._get_module_from_name(name)
File "/opt/python/3.5.0/lib/python3.5/unittest/loader.py", line 369, in _get_module_from_name
__import__(name)
File "/home/travis/build/MyGitHubName/mymodule/mymodule/__init__.py", line 1, in <module>
from mymodule import MyModule
ImportError: cannot import name 'MyModule'

我的测试脚本有以下导入:

import unittest
from mock import patch
from mymodule import MyModule

在 Travis 上,我尝试通过这两种方式运行测试

python setup.py test

python -m unittest discover

mymodule__init__.py 如下所示:

from mymodule import MyModule

mymodule.py 包含 MyModule 类。

同样,由于导入错误,这些在 Python 2.7 上有效,但在 3.4 或 3.5 上无效。我需要对我的导入进行哪些调整才能让我的测试在 Python 2.7 和 Python 3.4/3.5 中运行?

最佳答案

假设您的项目结构如下:

enter image description here

你确实会得到那个错误,因为你应该更明确地说明你在 python3 中的导入: Changes in import statement python3

因此,只需将 mymodule/__init__.py 中的 import 语句编辑为显式:

从 .mymodule 导入 MyModule

关于python - Travis 无法在 Python 3 变体中导入我的测试模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com