python -m unittest指定测试和/或模块而不是发现

时间:2017-08-21 10:41:17

标签: python python-unittest discovery

我试图在构建过程中运行一部分测试;但是我无法使用python3 -m unittest <test>

运行单独的测试

我试图关注文档并阅读:Running unittest with typical test directory structure但仍然没有运气

目录结构如下:

new_project
├── new_project
├──── __init__.py
├──── pipeline.py
├── regression_tests
├──── __init__.py
├──── helpers.py
├──── test_pipeline.py
└──── test_connectivity.py

python3 -m unittest discover级别运行new_project可以正常运行所有测试;但是现在尝试运行一个子集失败了,我现在尝试削减它:

python3 -m unittest regression_tests

结果:Ran 0 tests in 0.000s

python3 -m unittest regression_tests.test_pipeline
python3 -m unittest regression_tests.test_pipeline.TestClass
python3 -m unittest regression_tests.test_pipeline.TestClass.test_method
--- or ---
python3 -m unittest regression_tests/test_pipeline.py  

使用错误:AttributeError: 'module' object has no attribute 'test_pipeline'

最后为了完整性,这也失败了(正如我预期的那样,PYTHONPATH设置不正确):

cd regression_tests
python3 -m unittest test_pipeline

错误:ImportError: No module named 'regression_tests' (行from regression_tests.helpers import helper_method

上出现错误

我不认为我在做任何非标准的事情。为什么unittest discover有效但unittest <test>失败?

1 个答案:

答案 0 :(得分:0)

要成功运行子目录测试用例,您需要使用以下命令指定目录。

python -m unittest discover -s directoryname -p "test_*"