Java多进程测试用例_Pytest xdist/Pytest并行多进程执行测试用例,pytestxdistpytestparallel...

如果想分布式执行用例,用例设计必须遵循以下原则:

1.用例之间都是独立的,

2.用例a不要去依赖用例b

3.用例执行没先后顺序,

4.随机都能执行每个用例都能独立运行成功每个用例都能重复运行,不影响其它用例

这跟就我们平常多个人工测试一样,用例都是独立的,可以随机分配不同人员执行,互相不依赖,用例之间也不存在先后顺序

pytest-xdist/pytest-parallel安装及查看是否安装

安装

pip install pytest-xdist

pip install pytest-parallel

查看

pip show pytest-xdist

pytest-xdist

多cpu并行执行用例,直接加个-n参数即可,后面num参数就是并行数量,比如num设置为3

-n auto 自动侦测系统里的CPU数目

-n num 指定运行测试的处理器进程数

> pytest -n 3

正常运行需要消耗时间:7.12 seconds

E:\YOYO\web_conf_py>pytest

============================= test session starts =============================

platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0

rootdir: E:\YOYO\web_conf_py, inifile:

plugins: xdist-1.23.2, metadata-1.7.0, html-1.19.0, forked-0.2

collected 7 items

baidu\test_1_baidu.py .. [ 28%]

baidu\test_2.py .. [ 57%]

blog\test_2_blog.py ... [100%]

========================== 7 passed in 7.12 seconds ===========================

设置并行运行数量为3,消耗时间:3.64 seconds,大大的缩短了用例时间

E:\YOYO\web_conf_py>pytest -n 3

============================= test session starts =============================

platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0

rootdir: E:\YOYO\web_conf_py, inifile:

plugins: xdist-1.23.2, metadata-1.7.0, html-1.19.0, forked-0.2

gw0 [7] / gw1 [7] / gw2 [7] #####代表启动进程数

scheduling tests via LoadScheduling

....... [100%]

========================== 7 passed in 3.64 seconds ===========================

使用pytest-xdist插件也能生成html报告,完美支持pytest-html插件

pytest -n 3 --html=report.html --self-contained-html

对比说明:

pytest-parallel

pytst-xdist

相对好用,功能支持多。

pytst-xdist不支持多线程,而

pytest-parallel

支持

python3.6

及以上版本,如果想做多进程并发在

linux

或者

mac

上做,在

Windows

上不起作用(

Workers=1

),如果做多线程

linux/mac/windows

平台都支持,进程数为

workers

的值。

pytest-parallel常用配置命令如下

–workers (optional)

*:多进程运行需要加此参数, *是进程数。默认为1。

–tests-per-worker (optional)

*:多线程运行, *是每个worker运行的最大并发线程数。默认为1

pytest test.py --workers 3

:3个进程运行

p

ytest test.py --tests-per-worker 4

:4个线程运行

pytest test.py --workers 2 --tests-per-worker 4

:2个进程并行,且每个进程最多4个线程运行,即总共最多8个线程运行。

【特别注意】:

1.pytest-parallel的workers参数在windows系统下永远是1,在linux和mac下可以取不同值。

2…pytest-parallel加了多线程处理后,最后执行时间是运行时间最长的线程的时间。

3.在windows下想用多进程的选pytst-xdist; 想用多线程的选pytest-parallel

扩展:

重复执行用例:

使用

--count

命令行选项指定要运行测试用例和测试次数

py.test --count=10 test_file.py

pytest baidu/test_1_baidu.py -s --count=5

会第一个用例运行

5

次 然后运行第二个用例5次 如果希望 第一个用例 第二个用例这样按顺序重复

5

次 要用到

--repeat-scope

pytest tearr_function.py -s --count=5 --repeat-scope=session

如果要在代码中标记要重复多次的用例 可以使用

@pytest.mark.repeat(count)

这样执行用例时候,就不用带上

--count

参数,只针对

test_02

重复执行

5

pytest tearr_function.py -s

果您正在尝试诊断间歇性故障,那么一遍又一遍地运行相同的测试直到失败是有用的。您可以将

pytest

-x

选项与

pytest-repeat

结合使用,以强制测试运行器在第一次失败时停止。例如:

> py.test --count=1000 -x test_file.py

这将尝试运行

test_file.py

1000次,但一旦发生故障就会停止

你可能感兴趣的:(Java多进程测试用例)