Pabot - 无法运行并行机器人框架测试

Posted

技术标签:

【中文标题】Pabot - 无法运行并行机器人框架测试【英文标题】:Pabot - Unable to run parallel robotframework tests 【发布时间】:2019-03-15 02:39:14 【问题描述】:

所以,我正在开发一个机器人框架测试项目,目标是并行运行多个测试套件。为此,选择了 pabot 作为解决方案。我正在尝试实现它,但收效甚微。

我的问题是:在安装 Pabot 之后(我可能会说,我是通过克隆项目并运行“setup.py install”而不是使用 pip 来完成的,因为我背后的公司代理已证明是我的障碍无法克服),我在项目树中创建了一个新目录,将一些套件移到那里,然后运行:

pabot --processes 2 --outputdir pabot_results Login*.robot

这样做会导致以下错误消息:

2018-10-10 10:27:30.449000 [PID:9676] [0] EXECUTING Suites.LoginAdmin

2018-10-10 10:27:30.449000 PID:400 EXECUTING Suites.LoginUser

2018-10-10 10:27:30.777000 PID:400 FAILED Suites.LoginUser

2018-10-10 10:27:30.777000 [PID:9676] [0] 失败的 Suites.LoginAdmin

警告:“pabot_results\pabot_results”中没有输出文件 输出: [错误]读取XML源''失败:无效模式('rb')或文件名

尝试 --help 以获取使用信息。 经过时间:0分0.578秒

检查生成的 stderr 文件后,我收到以下消息:

Traceback(最近一次调用最后一次): 文件“C:\Python27\Lib\site-packages\robotframework-3.1a2.dev1-py2.7.egg\robot\running\runner.py”,第 22 行,在 从 .context 导入 EXECUTION_CONTEXT ValueError:尝试在非包中进行相对导入

显然,这与 runner.py 脚本中的某些内容有关,如果我没记错的话,它与 robotsframework 的安装有关。由于手动修改该脚本在我看来并不是最佳解决方案,我的问题是,我在这里缺少什么?设置时我是否忘记做任何事情?或者这是版本之间的兼容性问题?

此项目使用 Maven 作为管理依赖项的工具。我正在运行的版本是 3.5.4。我使用的是 Windows 10, 64bit 系统;我有 Python 2.7.14Robot Framework 3.1a2.dev1Pabot 版本为 0.44。显然,我在 PATH 环境变量中添加了 C:\Python27 和 C:\Python27\Scripts。

编辑:我也在使用robotframework-maven-plugin 1.4.0.8 版,如果这恰好相关的话。 编辑 2:以文本格式添加错误消息。

【问题讨论】:

您是否尝试使用 pip 但从本地目录安装? ***.com/a/20043907/9999810 是的,但由于同样的原因我失败了......所以,如果我只是下载 get-pip.py 并从命令行运行它,我会收到一条消息说正在收集 pip,然后我即使添加代理选项(即运行 python get-pip.py --proxy user:password@proxyserver:port),我也无法消除相同的网络连接错误 但是最新版本的python默认不附带pip吗? 我不这么认为,因为如果我尝试运行“pip install X”,我会收到以下消息:'pip' 不是内部或外部命令、可运行程序或批处理文件。 请花时间复制、粘贴和格式化错误消息,而不是发布屏幕截图。屏幕截图难以阅读、不可搜索且无法复制/粘贴。 【参考方案1】:

以防万一将来有人偶然发现这个问题:

由于我不能使用 pip,并且我尝试了很多变通办法,最终使事情变得更加不稳定,我最终保存了我的项目并从我的系统中删除了所有与 Python 相关的内容,以便我可以安装所有内容从头开始。在 Windows 10, 64bit 系统中,我使用了:

Python 2.7.14

wxPython 2.8.12.1,win64,unicode,用于 py27

setuptools 40.2.0(允许我使用 easy_install 命令)

机器人框架 3.0.4

robotremoteserver 1.1

Selenium2Library 3.0.0

Pabot 0.45版

我可能会补充一点,当按照我上面描述的方式安装 Selenium2Library 时,它最终会尝试从 pip 存储库下载一些东西——如果你有代理,这会给你带来麻烦。我通过浏览 https://pypi.org/simple/selenium/ 解决了这个问题,手动下载了 2.53.6 .tar.gz 文件,然后解压并在命令行运行 setup.py install

PS:不过,理想情况下,任何人都应该能够从命令行使用代理设置 (--proxy http://user:password@server:port) 来获取 pip 然后使用它;但是,出于某种原因,可能与我不想浪费时间的网络安全配置有关,这在我的情况下不起作用。

【讨论】:

【参考方案2】:

您似乎偶然发现了机器人框架 (3.1a2.dev1) 的预发布版本中的一个错误。 请安装机器人框架的发布版本。例如 3.0.4。

【讨论】:

这确实解决了我遇到的错误,但现在我的问题是,当我尝试运行上面描述的 pabot 命令时,我收到此错误:[ ERROR ] 文件中的错误 '( ...)\src\test\robotframework\try\LoginAdmin.robot':导入测试库 'Selenium2Library' 失败:ImportError: No module named SeleniumLibrary File "build\bdist.win-amd64\egg\Selenium2Library_init_.py",第 19 行,在 中显然,这个问题很容易用 pip 解决,我显然仍然无法使用。有没有办法在没有 pip 的情况下添加必要的模块?【参考方案3】:

我相信在我的机器上设置并行执行时遇到了类似的问题。首先,我会确认使用 pip show robotframework-pabot 安装了 pabot。

然后您应该使用-d 定义您的结果将要存放的目录。 然后我将-o的名称修改为Output.xml,以便于识别。

这是我使用的代码的副本。使用 8 个进程以最佳方式运行

pabot --processes 8 -d results -o Output.xml Tests

【讨论】:

就是这样,我安装了 pabot,但我下载了压缩文件夹,然后通过命令行运行 setup.py。由于我解释的原因,我在使用 pip 方面根本没有取得多大成功,所以我不能使用你的线路来检查 pabot 安装...... 您是否尝试过卸载 PIP 然后重新安装?这可能会解决它。 就是这样,我没有安装pip,原因我上面已经解释过了……即使在命令行中设置了代理,我也无法让它通过防火墙。我以相同的方式安装了robotframework 和其他所有东西:下载压缩文件夹,解压它,然后在目录中运行 install setup.py。 Robotframework 确实有效... 您使用 python 2.7 有什么原因吗?卸载它并安装新版本可能会解决您的问题。 我使用 Python 2.7 是因为 a)我没有启动这个项目,我只是“继承”了它,并且 b)我的印象是一些与机器人框架相关的东西仍然没有与 Python 3 完全兼容。但是,我将尝试它,如果它有效,我会发布它作为答案。

以上是关于Pabot - 无法运行并行机器人框架测试的主要内容,如果未能解决你的问题,请参考以下文章

如何并行运行机器人框架测试用例而不是并行测试套件?

使用Pabot并行运行RF案例

如何实现Robot框架在两台不同机器上并行测试执行?

如何在机器人框架中并行运行多个测试套件上的多个测试用例 | Python

苹果 |机器人框架 |无法使用自定义定位器策略运行关键字来查找元素

如何在机器人框架中实现并行执行