2015-05-28 99 views
0

时无法导入源代码,所以我有一个项目:pybuilder和pytest:运行测试

<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 
+0

没有'resources'模块或文件夹在您的图表中描述。 – IanAuld

+0

你是对的,我的图是错的。我现在纠正它 –

+0

我想你可能需要使用'from data_merger.resources.diff_table import DiffTable',假设所有这些文件夹中都有一个'__init __。py'。 – IanAuld

回答

0

这是一个已知的问题: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