Python + Selenium : Running tests in parallel

标签 python selenium multiprocessing nose nosetests

如何并行运行多个测试?测试是用 Python 编写的,套件从 jenkins 开始并在 sauce labs 上运行。

当我在 jenkins 中设置不同的作业并同时运行它们时,它们都会失败,我认为这是因为它们未设置为以这种方式运行。

如果这是一个非常令人费解的问题,我深表歉意,我希望有人能指出正确的方向,我愿意提供额外的文档。

我检查了这个链接 http://nose.readthedocs.org/en/latest/doc_tests/test_multiprocess/multiprocess.html

我确实使用 nose 运行测试,但不确定我是否正确设置了它。

最佳答案

我也遇到过在 Windows 和 CentOS 7 以及 CPython 3.5.1 和 CPython 3.4.6 下并行运行 Selenium 测试的问题。

我建议您切换到 pytest 并使用 pytest-xdist 并行运行。演示如何组合 pytest、'pytest-xdistselenium` 的 github 存储库位于 https://github.com/danizen/python-selenium-parallel。 .

关键考虑因素是确保 Selenium Webdriver 的实例特定于进程。我的建议是使用 threading.local为此,我的示例改为仅在类(class)级别共享。

我还认为通常需要为 DevOps 和开发人员提供一种方法来指定用于基于环境变量或命令行选项创建 Selenium 网络驱动程序的参数。参见 https://pypi.org/project/holmium.core/就如何做到这一点而言——他们也可能支持多线程,但我不确定。但是,我不赞同钬的页面对象想法,而且许多 Selenium 网格都是自家种植的。参见 https://github.com/ncbi/robotframework-pageobjects/另一种方法,这次使用 robotframework。

请注意,nose 的开发已经停止,但我想如果您使用的是 CPython 2.7,它可以工作,至少在 Linux 上是这样。

关于Python + Selenium : Running tests in parallel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24390663/

相关文章:

python - 如何使 BufferedReader 的 peek 更可靠?

python - 使用 $(System.AccessToken) 在 Azure DevOps 构建管道上使用私有(private) git 存储库中的 tox 安装包

python - PIP 和 virtualenv 的问题

scala - 在 Play 框架规范中设置 PhantomJSDriver 上的 Accept-Language

python - 为什么我不能覆盖这个魔术方法?

java - 等待一个浏览器完成操作并在 selenium webdriver 中的另一个浏览器中继续

java - java中的 Selenium 异常(org.openqa.selenium.remote.UnreachableBrowserException)

linux - execv() 和 fork() 的时间浪费

python - 使用多处理队列、池和锁定的简单示例

python multiprocessing - 重新运行初始化程序,或在所有工作人员上运行函数?