unittest 命令行界面

2022-08-02 09:37 更新

可以在命令行中使用 unittest 模块从模块、类甚至单个测试方法运行测试:

python -m unittest test_module1 test_module2
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method

您可以传入包含模块名称和完全限定类或方法名称的任意组合的列表。

测试模块也可以通过文件路径指定:

python -m unittest tests/test_something.py

这允许您使用 shell 文件名完成来指定测试模块。指定的文件仍必须可作为模块导入。通过删除“.py”并将路径分隔符转换为“.”,将路径转换为模块名称。如果要执行不可作为模块导入的测试文件,则应直接执行该文件。

您可以通过传入 ​-v​ 选项来运行具有更多详细信息(更详细)的测试:

python -m unittest -v test_module

在没有参数的情况下执行时,将启动测试发现

python -m unittest

有关所有命令行选项的列表:

python -m unittest -h

版本3.2中的更改: 在早期版本中,只能运行单独的测试方法,而不能运行模块或类。

命令行选项

unittest 支持以下命令行选项:

-b, ​--buffer

标准输出和标准错误流在测试运行期间被缓冲。通过测试期间的输出将被丢弃。输出在测试失败或错误时正常回显,并添加到失败消息中。

-c ,--catch

​测试运行期间的 ​Control-C​ 等待当前测试结束,然后报告到目前为止的所有结果。第二个​ Control-C ​引发正常的 ​KeyboardInterrupt ​异常。

有关提供此功能的函数,请参阅信号处理

-f ,--failfast

在第一个错误或失败时停止测试运行。

-k

仅运行与模式或子字符串匹配的测试方法和类。此选项可以多次使用,在这种情况下,所有匹配任何给定模式的测试用例都包括在内。

包含通配符 (​*​) 的模式使用 ​fnmatch.fnmatchcase() 与测试名称匹配;否则使用简单的区分大小写的子字符串匹配。

模式与测试加载程序导入的完全限定的测试方法名称进行匹配。

例如,​-k foo​ 匹配 ​foo_tests.SomeTest.test_something​、​bar_tests.SomeTest.test_foo​,但不匹配​ bar_tests.FooTest.test_something​。

--locals

在回溯中显示局部变量。

版本 3.2 中的新功能: 添加了命令行选项 -b,​-c​和-f
版本 3.5 中的新功能:--locals
 命令行选项 。
版本 3.7 中的新功能: ​-k​命令行选项 。

命令行也可用于测试发现、运行项目中的所有测试或仅运行子集。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号