接口测试 Python + pytest + excle 接口自动化测试通过 pytest-xdist 插件并发如何保证执行顺序

退之 · 2021年02月03日 · 最后由 yqyayiye 回复于 2021年02月04日 · 379 次阅读

接口测试执行效率过慢,想提高接口测试的执行效率,缩短时间,通过 pytest-xdist 插件并发运行。
通过 pytest-dist 插件带上 --dist loadfile 参数运行,保证每个文件运行在相同的 worker 上。但接口测试在 excle 中的顺序必须从上到下执行才能顺利跑通,请问 .py 文件内部的执行顺序如何保证呢?

共收到 5 条回复 时间 点赞

.py 文件内部的执行顺序就是从上往下的吧,具体问题能再描述下么?

dongfanger 回复

是的,目前我们接口自动化是通过 pytest + excle 来实现,每一个 excle 的 sheet 页对应一个功能模块的接口用例,每个 sheet 页对应到一个 .py 文件,每个 .py 文件只有 1 个测试用例,这个用例做了参数化,数据来自于 excle 的 sheet 页,从上往下执行。
通过 pytest-xdist 这个插件的--dist loadfile 参数保证每个.py 文件运行在相同的 worker 上,但是每个测试用例经过了参数化形成了多个子用例,这个多个子用例之间的顺序怎么去保证呢?因为我们的用例有依赖关系,必须从上往下执行,如果顺序乱了,接口测试就会出现很多错误。

退之 回复

奥你的问题是,经过参数化后的多个子用例,在分布式执行时,如何按顺序执行?这个貌似没有办法吧,分布式本来就是并行的,并行又要保证先后顺序。
分布式执行用例的设计原则:
用例之间是独立的,用例之间没有依赖关系,用例可以完全独立运行。【独立运行】
用例执行没有顺序,随机顺序都能正常执行。【随机执行】
每个用例都能重复运行,运行结果不会影响其他用例。【不影响其他用例】

建议将用例解耦,不仍然你这个并行无意义

有依赖关系,前一个用例执行失败了,后面的用例怎么办?
上面董芳同学讲的是对的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册