Selenium Grid 和 pytest-xdist 插件有什么区别?

问题描述

我是并行测试的新手,我想知道它们之间有什么区别。

显然,pytest-xdist 不需要 Selenium Grid 来运行。它可以单独与 Selenium 一起使用。

有没有人有任何线索或资源可以让我了解其中的区别?

谢谢和亲切的问候。

解决方法

为了以防万一这对任何人有用,我会写下我学到的:

pytest-xdist:用于在安装在将运行测试的本地机器上的浏览器中运行并行测试。这意味着每个测试都配置了一个浏览器(例如:Firefox、Chrome),例如:

+------------+---------+---------------------+------------+ | feature_id | user_id | feature_name | can_access | +------------+---------+---------------------+------------+ | 1 | 1 | automated-investing | 1 | | 2 | 1 | crypto | 0 | | 3 | 2 | crypto | 0 | | 4 | 3 | automated-investing | 0 | | 5 | 4 | automated-investing | 1 | | 7 | 1 | financial-tracking | 1 | | 8 | 2 | financial-tracking | 0 | | 9 | 3 | financial-tracking | 1 | | 10 | 4 | financial-tracking | 0 | | 11 | 5 | crypto | 1 | +------------+---------+---------------------+------------+

driver = webdriver.Firefox()

因此,每个测试都将使用代码中指定的驱动程序运行。显然,本地机器需要浏览器驱动程序在任何PATH 位置可用,以便可以使用它们运行测试。

Selenium Grid:它允许在不同浏览器、浏览器版本和操作系统配置中执行测试。

Selenium Grid 结合 pytest-xdist 允许在不同的 浏览器操作系统 环境中执行并行测试(配置了功能,我认为).

一个执行命令示例是:

driver = webdriver.Chrome()

-n5:(pytest参数)表示会同时启动5个浏览器实例。

test or ready:这些标记可以组合起来执行具有这些标记的测试。

browserName firefox:这是一项功能,表明测试必须在指定的浏览器中运行,在本例中为 Firefox。一些可能的值是:pytest -n5 -v -s -m "test or ready" --capability browserName firefox.

其他一些功能是:

version:要使用的浏览器版本。

平台:浏览器将在其中执行的平台。一些可能的值是:chrome,firefox,internet explorer,safari.

要设置 Selenium Grid 环境,请执行以下步骤:

  1. 从以下位置下载 selenium-server-standalone-[version].jar https://www.selenium.dev/downloads/
  2. 启动HUBWINDOWS,XP,VISTA,MAC,LINUX,UNIX,ANDROID
  3. 根据需要启动任意数量的 NODESjava -jar selenium-server-standalone-[version].jar -role hub
  4. 在测试中配置一个 java -jar selenium-server-standalone-[version].jar -role node -hub http://[URL_HUB]/wd/hub,例如:RemoteDriver

我仍然需要学习如何将 capabilities args 作为参数传递给 driver = webdriver.Remote( desired_capabilities = DesiredCapabilities.CHROME,command_executor = 'http://[URL_HUB]:4444/wd/hub')。在 RemoteDriver 文件中,我可以使用 conftest.py 以列表形式获取功能。我仍然需要弄清楚如何将我想要的功能传递给我所有测试的 config.getoption('--capability')) 方法。

如果有人知道,我会很感激的。

我希望这能帮助那些和我一开始一样迷茫的人:)