使用nose分别运行不同目录下的单元测试和集成测试
我已经想了很久这个问题,但一直没弄明白怎么给 nosetests
传递选项,以便运行不同子目录里的测试。比如说,一个包的目录结构如下:
my_package/
|-- my_module1/
|-- tests/
|-- unit/
| ... a bunch of unit tests
|-- integration/
|... a bunch of integration tests
|-- my_module2/
|-- tests/
|-- unit/
| ... a bunch of unit tests
|-- integration/
|... a bunch of integration tests
如果我只想执行我所有模块中的单元测试(也就是 tests/unit/
子目录里的所有测试),我该怎么用 nosetests 库来做到这一点呢?
1 个回答
2
我觉得 --where
或 --match
这些 nosetests 的参数可以帮到你:
-w WHERE, --where=WHERE
在这个目录里寻找测试。可以指定多个目录。第一个传入的目录会被当作工作目录,替代当前的工作目录(默认是当前目录)。其他的目录会被加入到要执行的测试列表中。[NOSE_WHERE]-m REGEX, --match=REGEX, --testmatch=REGEX
匹配这个正则表达式的文件、目录、函数名和类名都会被视为测试。默认值是 (?:^|[\b_./-])[Tt]est。[NOSE_TESTMATCH]
另外,可以看看这个链接:有人知道 nosetest 的 -m, -i 和 -e 是怎么用的吗?
不过,其实我更喜欢把测试目录放在根目录下:如何使用 nosetests 单独组织和运行单元测试和功能测试