mu_tou_man

导航

 

本文转自:https://www.cnblogs.com/mikigo/p/13334753.html

 

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 版更改: 在早期版本中,只支持运行独立的测试方法,而不支持模块和类。

命令行选项:

-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_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 。

命令行亦可用于探索性测试,以运行一个项目的所有测试或其子集。

探索性测试
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
用于匹配测试文件的模式(默认为 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"

正如可以传入路径那样,传入一个包名作为起始目录也是可行的,如 myproject.subpackage.test 。你提供的包名会被导入,它在文件系统中的位置会被作为起始目录。

posted on 2022-04-08 12:25  mu_tou_man  阅读(198)  评论(0编辑  收藏  举报