使用 Docker、Selenium 和 Pytest 来运行并行测试



我正在尝试将这些东西一起使用,以便在无头chrome中运行并行测试:

Docker, Selenium, Pytest

但是,我想知道在哪里运行系统的并行部分有意义?

Docker可以做到这一点(使用Selenium grid)。这两种都可用于运行并行 (和分布式) 硒测试.例如

https://github.com/elgalu/docker-selenium

https://github.com/zalando/zalenium

此外,Pytest 也有自己运行并行测试的方式(使用 pytest-xdist),例如

http://pytest.org/dev/xdist.html

运行 10 个并行 pytest-xdist 会比运行 10 个 docker 容器更容易吗?

我很感激找出每个人的优点/缺点。

另外,知道如何将这些东西一起使用吗?这方面的信息似乎非常稀少。

您可以根据需要/想要创建尽可能多的容器,然后您将知道容器的xdist IP,如果您需要UI测试,那么pytest具有pytest-splinter,如果您需要bdd场景,则可以使用pytest-bdd。

但是,我想知道在哪里运行系统的并行部分有意义?

每个部分都将有助于并行性的发生。 您需要Selenium HUB来编排可用的浏览器来运行测试。您可以让n 个浏览器在无头模式下运行,每个浏览器都隔离在自己的容器中。

运行 10 个并行 pytest-xdist 会比运行 10 个 docker 容器更容易吗?

Pytest 将为您并行执行测试,而不是对可用浏览器的实例化和编排。

总结:

问题:您需要并行运行 UI(硒)测试。您将需要N个可用的浏览器来运行此测试。

解决方案:您可以从 docker 启动N 个无头 chrome 节点。 问题:在测试中,您有 10 种不同的连接选项可供驱动程序使用。

解决方案:启动硒集线器,让它为您管理这些。因此,您只需要关注一个连接点,然后它将为您提供可以自由运行该测试的浏览器。

问题:您现在运行测试,但只使用了一个浏览器。 解决方案:使用 xdist 指示 pytest 每次运行X数量的测试。在这种情况下,X可以与N个可用的浏览器匹配。

最新更新