机器人框架:有没有什么方法可以同时在多个andriod设备上执行测试用例(相同的测试用例/测试套装)?

时间:2018-01-16 06:59:50

标签: robotframework

enter image description here一旦在多个Android设备上启动应用程序。我们如何一次在多个移动设备上执行相同的测试用例?因为我有一堆测试用例要在多个Android设备上执行。我试图通过在测试用例中传递udid或Appium Server名称来使用For循环,但它不起作用。它仅在单个设备上执行测试用例。是否有任何方法可以使用它来执行测试用例(相同的测试用例/测试)适合在多个Android设备上同时使用?

4 个答案:

答案 0 :(得分:1)

您可以将https://github.com/mkorpela/pabot与--argumentfile [NUMBER]选项一起使用。

答案 1 :(得分:1)

您基本上想要做的是测试的并行执行。有很多工具可以轻松实现这一目标(覆盖大量设备和口味),如SeeTest Cloud,Xamarin Test Cloud,AWS Device Farm,Perfecto等

但是,如果您想要使用Appium和TestNG,仍然可以实现。以下是高级步骤:

  1. 使用不同的方式启动Appium服务器的多个实例 address,port,callbackPort和BootstrapPort作为节点的一部分 命令。
  2. 获取设备的UUID并将其传递给TestNG xml
  3. 将xml作为套件运行。
  4. 以下是具有确切命令和步骤的链接: http://toolsqa.com/mobile-automation/appium/appium-parallel-execution-using-testng/

答案 2 :(得分:1)

您可以使用以下内容作为问题的解决方案。正如我之前在答案中所说,您可以将驱动程序保存在字典&{drivers}中,并在循环中使用它来对所有设备执行重复操作。

*** Settings ***
Library           AppiumLibrary
Library          Collections
Library          Process

*** Variables ***
${APPIUM_SERVER1}    http://127.0.0.1:4723/wd/hub
${APPIUM_SERVER2}    http://127.0.0.1:4750/wd/hub
${udid_device1}    udid of device 1
${udid_device2}    udid of device 2

*** Keywords ***
setup and open android phone A
    &{drivers}=    Create Dictionary
    ${androiddriver1}=    Open Application    ${APPIUM_SERVER1}    platformName=android    platformVersion=7.0    deviceName=android   udid=${udid_device1}    automationName=uiautomator2
    ...    appPackage=com.android.contacts    newCommandTimeout=2500    appActivity=com.android.contacts.activities.PeopleActivity
    Set To Dictionary    ${drivers}    ${udid_device1}=${androiddriver1}
    Set suite variable    ${drivers}


setup and open android phone B
    ${androiddriver2}=    Open Application    ${APPIUM_SERVER2}    platformName=android    platformVersion=7.0    deviceName=android    udid=${udid_device2}    automationName=uiautomator2
    ...    appPackage=com.htc.contacts   newCommandTimeout=2500    noReset=True    appActivity=com.htc.contacts.BrowseLayerCarouselActivity
    Set To Dictionary    ${drivers}    ${udid_device2}=${androiddriver2}
    Set suite variable    ${drivers}
    Log Dictionary    ${drivers}

Open URL
    :FOR    ${key}    IN    @{drivers.keys()}
    \    ${value}=    Get From Dictionary    ${drivers}    ${key}
    \    Log    ${key}, ${value}
    \    repetitive actions here

答案 3 :(得分:0)

您可以将open application中的会话保存在字典中,并在循环中使用它们在每部手机上执行某些操作。 请使用代码编辑您的问题以获得进一步的帮助。