我在使用appium和pabot运行Robot Framework测试套件时遇到了一些问题。
我正在多个Android设备上运行一些测试套件,如下所示:
pabot --pabotlib --argumentfile1 phone1.dat --argumentfile2 phone2.dat -v LANG:fr --outputdir output --output basics.xml JustBasics_tests.robot
pabot --pabotlib --argumentfile1 phone1.dat --argumentfile2 phone2.dat -v LANG:fr --outputdir output --output another.xml LetsRunAnother_test.robot
我没有在一个pabot指令中执行所有套件,因为如果我喜欢这个,我会得到一些appium错误...错误如:WebDriverException: Message: A session is either terminated or not started pabot
或WebDriverException: Message: A new session could not be created. Details: Problem getting session data for driver type AndroidDriver; does it implement 'get driverData'?
我想从another.xml和basics.xml创建一个报告,例如log.html和report.html(之后与Jenkins合作)。
我的第一个问题是basics.xml和another.xml文件只包含一个来自两个设备之一的测试执行。如果我想从测试用例执行的两个设备获取数据,我需要获取包含测试用例执行的output.xml文件......当然,在每个pabot命令之后会覆盖output.xml。
所以我想只需复制每个output.xml并重命名为outputX.xml,最后制作一个
rebot output1.xml output2.xml output3.xml ....
但是重启不能像我预期的那样工作:重启只是复制X次报告的第一次移动测试,所以我在log.html上有类似的东西:
JustBasics Test_Results_for_phone1 Test_Results_for_phone1
LetsRunAnother Test_Results_for_phone1 Test_Results_for_phone1
我究竟做错了什么?
我的第二个问题是我的日志文件中没有屏幕截图,当测试执行失败时(例如app的错误或崩溃)。它们都指向log.html中的根目录,但图像位于路径中,如pabots_results / X / TestSuiteName / appium-screenshoot-x.png这里又出了什么问题?我是否必须对图像做一些事情,或者pabot应该单独执行(在pabot.py接近文件末尾,有一个名为_copy_screenshots的函数....)
关于这个故事令人不安的是,没有关于pabot的大量文档。而且我不知道我做错了什么或者pabot是否有一些错误!
所以感谢阅读我,看到你;)!
更新:为了避免所有这些问题,我写了这个小工具:https://github.com/bastienjalbert/aptr
对于你的截图问题,我假设你正在使用Jenkins的Robot Framework插件。这里发生的是,在测试执行后,插件将移动输出,报告并记录到当前构建的工作区,以在构建的仪表板中显示它。另一方面,屏幕截图默认情况下不会移动。
在你的工作配置中,在post-build actions
下,你应该有publish Robot Framework test results
。单击高级按钮,查看所有选项,您应该有一个标记为other files to copy
的字段
在此字段中,您可以添加与您的selenium屏幕截图匹配的路径(可能只是*.png
)
现在,在测试执行之后,插件应该将屏幕截图移动到与log.html相同的位置,并且它们将能够显示在日志中。
您可以在插件的page中找到这个以及可能与您相关的更多信息
我想你会想用
rebot --merge output1.xml output2.xml output3.xml ....
从
rebot --help
(...)
Options
=======
-R --merge When combining results, merge outputs together
instead of putting them under a new top level suite.
Example: rebot --merge orig.xml rerun.xml
(...)