Python UnitTest 文档中文翻译-2-3(渣翻自娱)

来源:互联网 发布:淘宝十大人气主播 编辑:程序博客网 时间:2024/05/16 14:38

25.3.2命令行接口

unittest模块可以通过命令行来运行测试 无论是模块还是类或者只是单一的方法:

python -m unittest test_module1 test_module2python -m unittest test_module.TestClasspython -m unittest test_module.TestClass.test_method

你可以传递进来一个由任意模块名或者类或者方法组成的列表。

命令行测试的时候你可以通过 -v 后缀 显示更多细节:

python -m unittest -v test_module

你可以查看所有后缀选项 :

python -m unittest -h

25.3.2.1命令行选项

-b : –buffer 缓冲

在测试运行期间,标准输出和标准错误流被缓存。通过测试的输出随后被丢弃,输出通常在测试失败或错误后得到响应,并添加到失败信息中。

-c : –catch 捕获

在测试运行期间使用control - c的话,进程会等待当前的测试结束,然后报告所有已执行的结果。第二个control -c 会抛出 keyboardinterrupt 异常。

-f : –failfast

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

25.3.3测试 discovery

unittest 支持简单的 discovery测试。

为了与discovery测试兼容,所有测试文件必须是来自项目顶层目录的模块或包(这意味着这些文件的名字必须是有效的标识符)

discovery测试是在testloader . discover()中实现的,但也可以从命令行中使用。基本使用方式如下:

python -m unittest discover

后缀选项:

-v –verbose 详细内容

详细输出

-s –start-direcctory 目录

开始文件目录(默认 . )

-p –pattern 模式

模式匹配文件(默认 test*.py)

-t –top-level-directory

项目顶层目录(默认 开始文件目录 .)

后边三个后缀选项可以以这个顺序按顺序传入命令。

以下两个命令行等价:

python -m unittest discover -s project_directory -p "*_test.py"python -m unittest discover project_directory "*_test.py"

作为路径,可以传递包名,例如myproject.subpackage.test ,作为 开始目录。然后导入的包名会被导入,并且它在文件系统上的位置也会被用作开始目录。

注意

discovery测试通过把这些测试文件导入完成。一旦discovery测试从你指定的开始目录中找到所有测试文件,它将会把这些路径办成包名来导入。例如 /foo/bar/baz.py 会被这样导入 foo.bar.baz

如果你在全局上安装了一个包并且试图在包的一个副本上进行discovery测试,那么导入可能会来自错误的位置。如果这种导入发生,discovery测试就会发出警告并退出。

如果你将开始目录作为包名提供,而不是一个指向文件的目录,则会假设无论它哪个位置导入,都会是你想要的,这样你就不会收到警告。