问答 小白请教个 pytest 并发执行测试的问题

runningsnail · 2024年06月25日 · 最后由 Bzzb 回复于 2024年06月28日 · 7590 次阅读

现在用 pytest-xdist 能实现分布式执行,但是怎么让每个进程都执行搜集到的所有用例,而不是自动分配
大佬们有什么思路可以参考下嘛。。感谢感谢

共收到 10 条回复 时间 点赞

执行多次😂

你的目的是把 1000 个用例分配到三个进程里面跑,还是想起三个进程,把这 1000 条用例都分别跑一次?

Jerry li 回复

都跑一次

runningsnail 回复

多次执行不就完了,加个循环啥的

你包成 3 个任务 每个任务下面就是全部 case 不行吗?或者 3 个目录,懂我意思就行。

如果不行,可以试一下 其他并发测试工具,其实就 3 个异步任务吧,自己再发散下

执行 3 次命令,每次命令只指定一个进程

我想知道,为什么有这种需求?你加个 retry 都比这个好。

runningsnail 关闭了讨论 06月27日 09:19
runningsnail 重新开启了讨论 06月27日 09:19
下田了 回复

谢谢大哥,我研究研究

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)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册