我不知道如何触发并行测试用例执行
Robot 没有任何内置支持并行运行测试,除了您可以同时运行机器人两次。如果您想针对两个不同的浏览器运行相同的测试,您必须运行机器人两次,每次测试运行时使用一组不同的参数(即:浏览器规范)。
您也许可以使用pabot,尽管它旨在将一个测试拆分为两个或多个部分,而不是将一个测试运行两次。您也许可以根据自己的需要对其进行调整。
还有许多其他解决方案。例如,如果您使用 CI 服务器,您可以设置两个作业来运行,并创建第三个作业,当这两个作业完成时触发,这会获取两个作业的输出并将它们组合成一个报告。
如果您使用的是带有 bash shell 的系统,另一种解决方案是编写您自己的测试启动器,如下所示(尽管这完全未经测试):
# run two robot jobs in the background
robot -A firefox.args /path/to/tests.robot &
robot -A chrome.args /path/to/tests.robot &
# wait for the jobs to finish, then generate a consolidated report
wait
rebot --output ./output.xml firefox/output.xml chrome/.output.xml
在上面的例子中,.args 文件是标准机器人框架argument files。在它们中,您可以指定命令行参数,例如 selenium 网格 URL、输出文件的唯一文件夹的路径等。
例如:
# firefox.args
--variable GRID_URL: http://127.0.0.1/wd/hub
--variable CAPABILITIES:browserName:ff,version:45,platform:WINDOWS
--outputdir firefox_results
另外,在哪里分配 hub url 来触发执行?
当您使用 Open Browser 关键字打开浏览器时,您会这样做。具体来说,使用remote_url 参数。例如,一个测试用例可能如下所示,其中 ${GRID_URL} 和 ${CAPABILITIES} 在参数文件中定义:
*** Settings ***
| Library | Selenium2Library
*** Test cases ***
| Example of connecting to selenium grid
| | [Setup] | Open Browser
| | ... | http://example.com
| | ... | remote_url=${GRID_URL}
| | ... | desired_capabilities=${CAPABILITIES}
所以我正在寻找通过并行运行测试用例来减少总执行时间的解决方案。
你有两个选择:
- 使用pabot 自动将一个大型套件拆分为多个并行测试运行
- 为测试套件的不同部分手动创建多个作业(例如:pybot tests/suite1;pybot tests/suite2;pybot tests/suite3 等)