python unittest 文档

探索性测试

Added in version 3.2.

unittest 支持简单的测试发现。 为了与测试发现兼容,所有测试文件都必须是可从项目的最高层级目录导入的 模块 或  (这意味着它们的文件名必须是有效的 标识符)。

探索性测试在 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 )。

-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 。你提供的包名会被导入,它在文件系统中的位置会被作为起始目录。

小心探索性测试通过导入测试对测试进行加载。在找到所有你指定的开始目录下的所

有测试文件后,它把路径转换为包名并进行导入。如 foo/bar/baz.py 会被导入为 foo.bar.baz 。

如果你有一个全局安装的包,并尝试对这个包的副本进行探索性测试,可能会从错误的地方开始导入。如果出现这种情况,测试会输出警告并退出。

如果你使用包名而不是路径作为开始目录,搜索时会假定它导入的是你想要的目录,所以你不会收到警告。

测试模块和包可以通过 load_tests protocol 自定义测试的加载和搜索。

在 3.4 版本发生变更: 测试发现支持初始目录下的 命名空间包。注意你也需要指定顶层目录(例如:python -m unittest discover -s root/namespace -t root)。

在 3.11 版本发生变更: 在 Python 3.11 中 unittest 丢弃了 命名空间包 支持。 它自 Python 3.7 就已不可用。 包含测试的起始目录和子目录都必须是具有 __init__.py 文件的常规包。

包含起始目录的目录仍然可以是命名空间包。 在此情况下,你需要以带点号的包名称来显式地指明起始目录和目标目录。 例如:

# proj/  <-- current directory
#   namespace/
#     mypkg/
#       __init__.py
#       test_mypkg.py

python -m unittest discover -s namespace.mypkg -t .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值