分布式测试 (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%