python nose不会改变工作目录路径

时间:2015-12-17 17:17:42

标签: python unit-testing nose

我的鼻子有问题。 我想在测试目录中运行测试,但我不想让鼻子改变工作目录。这是因为我在我的库中使用相对导入和单元测试本身。

首先是目录结构:

app_dir
    app.py
    library_dir
        tests_dir
            test_1.py
            test_2.py

我目前正在app_dir目录中运行我的测试:

python -m unittest discover -s library_dir.tests_dir

这很好用。

现在,我想用鼻子(鼻子测试)来做这件事。

当我尝试时,我得到以下内容:

nosetests library_dir.tests_dir --collect-only -vv
Failure: SystemError (Parent module '' not loaded, cannot perform relative import) ... ok
Failure: SystemError (Parent module '' not loaded, cannot perform relative import) ... ok

我已经看过SO上的类似问题(有很多),我可以看到的一个建议就是从unittest本身中删除相对导入,但我喜欢这种模式。另外,如果我改为绝对导入,我会得到一个

(No module named '<the_module_under_test')

是否有任何方法可以从目录中找到测试(例如-w选项提供但是保持工作目录与调用鼻子的终端的工作目录相同? / p>

1 个答案:

答案 0 :(得分:0)

哎呀,看起来我需要做的就是将__init__.py添加到库和子目录测试目录中。我正在假设鼻子会像PEP 420那样按预期工作

  

块引用   PEP 420:隐式命名空间包

对不需要 init .py标记文件的程序包目录的本机支持,并且可以自动跨越多个路径段(受各种第三方命名空间程序包方法的启发,如PEP 420中所述)< / p>