unittest 命令行界面
可以在命令行中使用 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 支持以下命令行选项:
-c
,--catch
测试运行期间的
Control-C
等待当前测试结束,然后报告到目前为止的所有结果。第二个Control-C
引发正常的 KeyboardInterrupt
异常。有关提供此功能的函数,请参阅信号处理。
-k
仅运行与模式或子字符串匹配的测试方法和类。此选项可以多次使用,在这种情况下,所有匹配任何给定模式的测试用例都包括在内。
包含通配符 (
*
) 的模式使用 fnmatch.fnmatchcase()
与测试名称匹配;否则使用简单的区分大小写的子字符串匹配。模式与测试加载程序导入的完全限定的测试方法名称进行匹配。
例如,
-k foo
匹配 foo_tests.SomeTest.test_something
、bar_tests.SomeTest.test_foo
,但不匹配bar_tests.FooTest.test_something
。
版本 3.2 中的新功能: 添加了命令行选项-b
,-c
和-f
。
版本 3.5 中的新功能:--locals
命令行选项 。
版本 3.7 中的新功能: -k
命令行选项 。
命令行也可用于测试发现、运行项目中的所有测试或仅运行子集。