使用nose分别运行不同目录下的单元测试和集成测试

2 投票
1 回答
2532 浏览
提问于 2025-04-17 19:51

我已经想了很久这个问题,但一直没弄明白怎么给 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 单独组织和运行单元测试和功能测试

撰写回答