2016-09-06 44 views
3

我要找的运行python -m unittest discover的一种方式,它会发现,比如说,目录A测试,B和C.然而,目录A,B和C有一个名为dependencies内每个目录他们,其中也有一些测试,但是,我不想跑。运行单元测试发现忽略特定目录

有没有办法运行我的测试,满足这些约束,而无需为此创建脚本?

回答

-1

似乎python -m unittest下降到模块目录但不在其他目录中。

它迅速尝试了以下结构

temp 
    + a 
    - test_1.py 
    + dependencies 
    - test_a.py 

随着结果

>python -m unittest discover -s temp\a 
test_1 
. 
---------------------------------------------------------------------- 
Ran 1 test in 0.002s 

OK 

然而,如果目录是一个模块目录(包含文件__init__.py)的情况是不同的。

temp 
+ a 
    - __init__.py 
    - test_1.py 
    + dependencies 
    - __init__.py 
    - test_a.py 

这里的结果是

>python -m unittest discover -s temp\a 
test_a 
.test_1 
. 
---------------------------------------------------------------------- 
Ran 2 tests in 0.009s 

OK 

这个答案的实用性为你现在要看它是否是你的文件夹dependencies不是一个模块的目录可以接受的。

编辑:使用pytest是一个选项看到您的评论

会后?这个测试运行者有很多命令参数,其中一个专门用于排除测试。

Changing standard (Python) test discovery

从他们的网站

测试集

过程中忽略的路径,您可以通过将--ignore=path选项的CLI收集过程中容易忽略某些测试目录和模块。 Pytest允许多个--ignore选项

+0

不幸的是,它有一个'__init __。py'文件,它不能有任何不同:( – lucasnadalutti

0

我遇到了同样的问题,最终能够找到这些方便的参数传递给unittest发现,解决了我的问题。

在此记载:https://docs.python.org/2/library/unittest.html#test-discovery

-s, --start-directory directory 
Directory to start discovery (. default) 

-p, --pattern pattern 
Pattern to match test files (test*.py default) 

所以我修改了我的命令是:

python -m unittest discover -s test 

因为所有其实我是想运行在一个模块,测试的所有测试。您也可以使用-p理论上匹配只触及您的测试的正则表达式,忽略它可能找到的所有其余部分。

相关问题