准备:新建两个 test*.py 文件,文件用例,打开登录界面,输入用户名。用例独立 执行:新建 run.py 使用 pytest 多线程,启动两个线程执行 test*.py 文件的用例 结果:同时启动了两个谷歌浏览器,用户名输入操作在同一个浏览器中体现了,另一个浏览器停留在登陆界面,无用户名输入。多次运行还会警告连接池已满 为什么多线程执行独立用例失败了?
下面是目录结构: 下面是警告:
@Thirty-Thirty
没看懂
线程安全问题
不同容器中跑的?
UI 自动化,"多线程执行"的坑还是比较多的,因为 Selenium WebDriver 这类工具没有能力区分多线程启动的同一套测试环境下的多个被测应用程序实例。 想要多个测试用例同时执行,简单有效而又可靠的方法是引入 Selenium Grid,它的作用就是分布式执行测试。 分布式执行测试需要多套测试环境,Grid 可以自动将测试用例分发到每套测试执行环境上,并收集所有环境 (node 节点) 的执行结果。这些 node 节点可以是物理机,虚拟机或 docker 容器。 PS. 在 UI 自动化测试领域,"多线程执行"和"并发执行",通常来说既不是正确的做法也不是正确的叫法。很多人这样叫也这样做,结果走入了死胡同。
看了一下没太理解是啥,不全知道你怎么用多线程。可能要贴一下代码才比较好判断,可以把代码中的敏感信息打码掉
不要用 pytest-parallel,这个插件不兼容 allure,用 pytest-xdist,可以一台电脑上不使用 grid、不使用 docker 的情况下,同时跑多个用例