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

时间:2017-03-23 18:04:16

标签: selenium docker parallel-processing selenium-grid2 xdist

我正在尝试将这些所有东西一起用于无头镀铬中的并行测试:

Docker,Selenium,Pytest

但是,我想知道运行系统的并行部分有什么意义?

Docker可以这样做(使用selenium网格)。这两者都可用于运行并行(和分布式)硒测试。 e.g。

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容器更容易吗?

我很高兴找到每个人的优点/缺点。

另外,任何想法如何一起使用这些东西?有关这方面的信息似乎很少。

2 个答案:

答案 0 :(得分:0)

你创建了你需要/想要的容器然后你会知道容器的xdist IP,如果你需要UI测试,那么pytest有pytest-splinter,如果你需要bdd场景,你可以使用pytest-bdd。

答案 1 :(得分:0)

  

但是,我想知道在什么地方运行系统的并行部分?

每个部分都会为并行性的发生做出贡献。 您需要Selenium HUB来协调可用的浏览器以运行测试。您可以让 n 浏览器以无头模式运行,每个浏览器都隔离在自己的容器中。

  

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

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

摘要:

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

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

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

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