【发布时间】:2016-03-02 19:26:56
【问题描述】:
我正在尝试在 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
我的__init__.py mymodule 看起来像这样:
from mymodule import MyModule
mymodule.py 包含 MyModule 类。
同样,由于导入错误,这些适用于 Python 2.7,但不适用于 3.4 或 3.5。我需要对导入进行哪些调整以允许我的测试在 Python 2.7 和 Python 3.4/3.5 中运行?
【问题讨论】:
标签: python python-2.7 unit-testing python-3.x travis-ci