unittest在命令⾏中执⾏
unittest 模块可以通过命令⾏运⾏模块、类和独⽴测试⽅法的测试:
python -m unittest test_module1 test_module2
python -m unittest test_module.TestClass
python -m unittest test_st_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 版更改: 在早期版本中,只⽀持运⾏独⽴的测试⽅法,⽽不⽀持模块和类。
命令⾏选项:
-b, --buffer
在测试运⾏时,标准输出流与标准错误流会被放⼊缓冲区。成功的测试的运⾏时输出会被丢弃;测试不通过时,测试运⾏中的输出会正常显⽰,错误会被加⼊到测试失败信息。
-c, --catch
当测试正在运⾏时, Control-C 会等待当前测试完成,并在完成后报告已执⾏的测试的结果。当再次按下 Control-C 时,引发平常的KeyboardInterrupt 异常。
See Signal Handling for the functions that provide this functionality.
-f, --failfast
当出现第⼀个错误或者失败时,停⽌运⾏测试。
-k
只运⾏匹配模式或⼦串的测试⽅法和类。可以多次使⽤这个选项,以便包含匹配⼦串的所有测试⽤例。
包含通配符(*)的模式使⽤ fnmatch.fnmatchcase() 对测试名称进⾏匹配。另外,该匹配是⼤⼩写敏感的。
模式对测试加载器导⼊的测试⽅法全名进⾏匹配。
例如,-k foo 可以匹配到 foo_st_something 和 bar_st_foo ,但是不能匹配到
bar_st_something 。
--locals
在回溯中显⽰局部变量。
3.2 新版功能: 添加命令⾏选项 -b, -c 和 -f 。
3.5 新版功能: 命令⾏选项 --locals 。
3.7 新版功能: 命令⾏选项 -k 。
命令⾏亦可⽤于探索性测试,以运⾏⼀个项⽬的所有测试或其⼦集。
探索性测试
3.2 新版功能.
Unittest⽀持简单的测试搜索。若需要使⽤探索性测试,所有的测试⽂件必须是 modules 或 packages (包括 namespace packages )并可从项⽬根⽬录导⼊(即它们的⽂件名必须是有效的 identifiers )。
探索性测试在 TestLoader.discover() 中实现,但也可以通过命令⾏使⽤。它在命令⾏中的基本⽤法如下:
cd project_directory
python -m unittest discover
注解⽅便起见, python -m unittest 与 python -m unittest discover 等价。如果你需要向探索性测试传⼊参数,必须显式地使⽤ discover ⼦命令。
discover 有以下选项:
-v, --verbose
更详细地输出结果。
-s, --start-directory directory
开始进⾏搜索的⽬录(默认值为当前⽬录 . )。
-p, --pattern pattern
input命令⽤于匹配测试⽂件的模式(默认为 test*.py )。
python3 -m unittest discover -s cases/screen_recorder_test_cases/screen_cases/ -p "*001*.py"
-t, --top-level-directory directory
指定项⽬的最上层⽬录(通常为开始时所在⽬录)。
-s ,-p 和 -t 选项可以按顺序作为位置参数传⼊。以下两条命令是等价的:
python -m unittest discover -s project_directory -p "*_test.py"
python -m unittest discover project_directory "*_test.py"
正如可以传⼊路径那样,传⼊⼀个包名作为起始⽬录也是可⾏的,如 st 。你提供的包名会被导⼊,它在⽂件系统中的位置会被作为起始⽬录。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论