运行带有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 ....
但是rebot不能像我预期的那样工作:rebot只是复制X次报告的第一次移动测试,所以我在log.html上有类似的东西:
JustBasics
Test_Results_for_phone1
Test_Results_for_phone1LetsRunAnother
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
答案 0 :(得分:0)
对于截图问题,我假设你正在使用Jenkins的Robot Framework插件。这里发生的是,在测试执行后,插件将移动输出,报告并记录到当前构建的工作区,以在构建的仪表板中显示它。另一方面,屏幕截图默认情况下不会移动。
在您的职位配置中,post-build actions
下,您应该publish Robot Framework test results
。点击高级按钮,查看所有选项,您应该有一个标记为other files to copy
在此字段中添加与您的selenium屏幕截图匹配的路径(可能只是*.png
)
现在,在您的测试执行后,插件应该将您的屏幕截图移动到与log.html相同的位置,并且它们将能够显示在日志中。
您可以在插件的page
中找到这个,以及可能与您相关的更多信息。答案 1 :(得分:0)
我想你会想要使用
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
(...)