分布式测试 (xdist)¶
“load” 模式¶
将 dist 模式设置为“load” 的分布式测试将报告所有工作进程的组合覆盖率。工作进程可以分布在任意数量的主机上,并且每个工作进程可以位于文件系统上的任何位置。每个工作进程都将对其子进程进行测量。
运行 dist 模式设置为 load 的分布式测试
pytest --cov=myproj -n 2 tests/
显示终端报告
-------------------- coverage: platform linux2, python 2.6.4-final-0 ---------------------
Name Stmts Miss Cover
----------------------------------------
myproj/__init__ 2 0 100%
myproj/myproj 257 13 94%
myproj/feature4286 94 7 92%
----------------------------------------
TOTAL 353 20 94%
再次但分布在不同的主机和不同的目录中
pytest --cov=myproj --dist load
--tx ssh=memedough@host1//chdir=testenv1
--tx ssh=memedough@host2//chdir=/tmp/testenv2//python=/tmp/env1/bin/python
--rsyncdir myproj --rsyncdir tests --rsync examples
tests/
显示终端报告
-------------------- coverage: platform linux2, python 2.6.4-final-0 ---------------------
Name Stmts Miss Cover
----------------------------------------
myproj/__init__ 2 0 100%
myproj/myproj 257 13 94%
myproj/feature4286 94 7 92%
----------------------------------------
TOTAL 353 20 94%
“each” 模式¶
将 dist 模式设置为 each 的分布式测试将报告所有工作进程的组合覆盖率。由于每个工作进程都在运行所有测试,因此可以为多个环境生成组合覆盖率报告。
运行 dist 模式设置为 each 的分布式测试
pytest --cov=myproj --dist each
--tx popen//chdir=/tmp/testenv3//python=/usr/local/python27/bin/python
--tx ssh=memedough@host2//chdir=/tmp/testenv4//python=/tmp/env2/bin/python
--rsyncdir myproj --rsyncdir tests --rsync examples
tests/
显示终端报告
---------------------------------------- coverage ----------------------------------------
platform linux2, python 2.6.5-final-0
platform linux2, python 2.7.0-final-0
Name Stmts Miss Cover
----------------------------------------
myproj/__init__ 2 0 100%
myproj/myproj 257 13 94%
myproj/feature4286 94 7 92%
----------------------------------------
TOTAL 353 20 94%