Selenium ui 自动化多线程问题

大瓶子 · 2022年09月13日 · 最后由 fengzx120 回复于 2022年09月14日 · 7928 次阅读

准备:新建两个 test*.py 文件,文件用例,打开登录界面,输入用户名。用例独立
执行:新建 run.py 使用 pytest 多线程,启动两个线程执行 test*.py 文件的用例
结果:同时启动了两个谷歌浏览器,用户名输入操作在同一个浏览器中体现了,另一个浏览器停留在登陆界面,无用户名输入。多次运行还会警告连接池已满
为什么多线程执行独立用例失败了?

下面是目录结构:

下面是警告:

共收到 7 条回复 时间 点赞

没看懂

线程安全问题

不同容器中跑的?

大瓶子 回复

UI 自动化,"多线程执行"的坑还是比较多的,因为 Selenium WebDriver 这类工具没有能力区分多线程启动的同一套测试环境下的多个被测应用程序实例。
想要多个测试用例同时执行,简单有效而又可靠的方法是引入 Selenium Grid,它的作用就是分布式执行测试
分布式执行测试需要多套测试环境,Grid 可以自动将测试用例分发到每套测试执行环境上,并收集所有环境 (node 节点) 的执行结果。这些 node 节点可以是物理机,虚拟机或 docker 容器。
PS. 在 UI 自动化测试领域,"多线程执行"和"并发执行",通常来说既不是正确的做法也不是正确的叫法。很多人这样叫也这样做,结果走入了死胡同。

看了一下没太理解是啥,不全知道你怎么用多线程。可能要贴一下代码才比较好判断,可以把代码中的敏感信息打码掉

7楼 已删除

不要用 pytest-parallel,这个插件不兼容 allure,用 pytest-xdist,可以一台电脑上不使用 grid、不使用 docker 的情况下,同时跑多个用例

大瓶子 关闭了讨论 09月14日 13:39
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册