现在用 pytest-xdist 能实现分布式执行,但是怎么让每个进程都执行搜集到的所有用例,而不是自动分配
大佬们有什么思路可以参考下嘛。。感谢感谢
执行多次
你的目的是把 1000 个用例分配到三个进程里面跑,还是想起三个进程,把这 1000 条用例都分别跑一次?
你包成 3 个任务 每个任务下面就是全部 case 不行吗?或者 3 个目录,懂我意思就行。
如果不行,可以试一下 其他并发测试工具,其实就 3 个异步任务吧,自己再发散下
执行 3 次命令,每次命令只指定一个进程
我想知道,为什么有这种需求?你加个 retry 都比这个好。
xdist 中有个 --dist=each 参数,可以将每个用例,分别发给所有 worker,相当于开了几个 worker,同一个用例就执行几遍
官方文档:https://pytest-xdist.readthedocs.io/en/stable/how-it-works.html
我是利用了 pytest 的自定义标签来实现并发执行
@pytest.mark.parallel
@allure.feature('页面检查')
@allure.story('类型配置:检查页面元素,查询,新建,编辑,删除')
@allure.severity('Critical')
def test_pagecheck_type_configuration(browser, login_url):
# 解包 browser fixture
browser_instance, context, page = browser
page.goto(login_url)
LoginUtils.login(page, Configs.ACCOUNT_CONFIG['ADMIN_ACCOUNT'], Configs.ACCOUNT_CONFIG['T_PSD'])
fill_data = type_configuration_add_data
parallel_command = [
"pytest", "-n", "3", "-m", "parallel", "--alluredir", allure_results_path
]
for command in [parallel_command, generate_report_command, open_report_command]:
execute_command(command)