[英]pybuilder and pytest: cannot import source code when running tests
所以我有一個項目:
<root>
|- src
|-main
|-python
|-data_merger
|- common
|- constans
|- controller
|- resources
|- rest
|-tests
|-unittest
|-integrationtest
data_merger被標記為根(我正在使用Pycharm)。 這是我的構建文件的一部分:
@init
def set_properties(project):
project.set_property("dir_source_main_python", r"src\main\python\data_merger")
project.set_property("dir_source_integrationtest_python", r"src\tests\integrationtest")
project.set_property("dir_source_unittest_python", r"src\tests\unittest")
project.set_property("unittest_module_glob", "*_test.py")
project.set_property("unittest_test_method_prefix", "test_")
project.set_property("run_unit_tests_command",
"py.test %s" % project.expand_path("$dir_source_unittest_python"))
project.set_property("run_unit_tests_propagate_stdout", True)
project.set_property("run_unit_tests_propagate_stderr", True)
project.set_property("teamcity_output", True)
當我構建項目時,出現以下錯誤,它無法導入我的源代碼:
←[1m[INFO] ←[0;0m ERROR collecting src/tests/unittest/python/data_merger/controller/comparator_autom_params_test.py
←[1m[INFO] ←[0;0m src\tests\unittest\python\data_merger\controller\comparator_autom_params_test.py:6: in <module>
←[1m[INFO] ←[0;0m from resources.diff_table import DiffTable
←[1m[INFO] ←[0;0m E ImportError: No module named resources.diff_table
這是一個已知問題: https : //github.com/pybuilder/pybuilder/issues/13 。
我最終使用pytest-pythonpath 。 這是我的build.py
的相關部分:
from pybuilder.core import init, use_plugin
use_plugin("exec")
use_plugin("python.core")
use_plugin("python.unittest")
@init
def initialize(project):
project.set_property("run_unit_tests_command", "py.test %s" % project.expand_path("$dir_source_unittest_python"))
project.set_property("run_unit_tests_propagate_stdout", True)
project.set_property("run_unit_tests_propagate_stderr", True)
這是我的pytest.ini
:
[pytest]
python_paths = src/main/python
現在,它可以完美運行:
$ pyb run_unit_tests
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.