我要找的运行python -m unittest discover
的一种方式,它会发现,比如说,目录A测试,B和C.然而,目录A,B和C有一个名为dependencies
内每个目录他们,其中也有一些测试,但是,我不想跑。运行单元测试发现忽略特定目录
有没有办法运行我的测试,满足这些约束,而无需为此创建脚本?
我要找的运行python -m unittest discover
的一种方式,它会发现,比如说,目录A测试,B和C.然而,目录A,B和C有一个名为dependencies
内每个目录他们,其中也有一些测试,但是,我不想跑。运行单元测试发现忽略特定目录
有没有办法运行我的测试,满足这些约束,而无需为此创建脚本?
似乎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
选项
我遇到了同样的问题,最终能够找到这些方便的参数传递给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理论上匹配只触及您的测试的正则表达式,忽略它可能找到的所有其余部分。
不幸的是,它有一个'__init __。py'文件,它不能有任何不同:( – lucasnadalutti