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
在没有参数的情况下执行,会启动Test Discovery:
python -m unittest
如果要获取所有命令行选项的列表,请执行:
python -m unittest -h
注:
3.2版本之前的版本,只允许运行单独的测试方法,不可以按模块或类执行测试。
2.1 命令行选项
unittest支持下面这些命令行选项:
-b,--buffer
在测试运行期间缓冲标准输出和标准错误流。通过测试期间的输出被丢弃。输出在测试失败或错误时正常回显,并添加到失败消息中。(没看懂)
-c,--catch
测试运行期间的Ctrl+C等待当前测试结束,然后报告到目前为止的所有结果。第二个Ctrl+C引发了正常的KeyboardInterrupt异常。有关提供此功能的函数,请参考Signal Handling。
-f,--failfast
在第一次错误或失败时停止测试运行。
-k
仅运行与模式或字符串匹配的测试方法和类。此选项可以多次使用,在多次使用时包括与给定模式匹配的所有测试用例。
包含通配符*
的模式使用fnmatch.fnmatchcase()
来与测试名匹配。其他情况则使用简单的大小写敏感的子串来匹配。
模式与测试加载程序导入的完全限定的测试方法名称匹配。例如:-k foo
匹配foo_tests.SomeTest.test_something
和bar_tests.SomeTest.test_foo
,但是不匹配bar_tests.FooTest.test_something
。
--locals
在traceback中显示局部变量。
命令行还可以用于测试发现,用于运行项目中的所有测试或仅运行子集。
网友评论