并行在真实设备上运行

时间:2016-10-19 06:45:02

标签: java android testng appium

所有这些天我只在一台连接设备上使用appium运行我的android测试用例到我的系统

现在我需要运行两个连接到我的系统的设备,在appium上有两个不同的端口

我正在使用不同的端口启动两个appium我正在运行两个具有不同功能的测试用例 但是在同一台设备上推出了两项测试

我想知道如何设置功能,以便测试将在特定设备上启动

I had tried with this capability but no use
capabilities.setCapability("deviceName", "TA09401JJY");

请告诉我设置的功能,以便在特定设备上启动测试

2 个答案:

答案 0 :(得分:2)

我能够在单独的真实设备上运行并行测试,方法是使用每个独特端口启动几个appium实例。然后当我创建我的appium驱动程序时,我会传递我想要的设备的UDID以及我想用于该特定设备的appium实例的端口。

这是我的简化(仅1个设备)python代码,用于实例化appium驱动程序:

from appium import webdriver

def CreateDriver(value):
    appiumHub = None
    port = None

    desired_caps = {}
    desired_caps['autoAcceptAlerts'] = True
    desired_caps['newCommandTimeout'] = '120'

    if value == 'iPhone6s':
        desired_caps['platformName'] = 'iOS' 
        desired_caps['deviceName'] = 'iPhone1' 
        desired_caps['platformVersion'] = '8.3'  

        desired_caps['udid'] = 'df33dh93827364kj3iujgr3g32t22hg878ww7878'

        port = 4723

    appiumHub = 'http://localhost:' + str(port) + '/wd/hub'
    desired_caps['bundleId'] = 'com.someplace.myapp'

    driver = webdriver.Remote(appiumHub, desired_caps)  

    return driver

我必须复制我的测试方法并将它们放在自己的文件中,然后使用ddt传递要运行的设备:

@data('iPhone6s')
def test_P2A_Accept(self, value):        
    # Some test method

然后我会从命令文件(MAC)运行每个测试模块以使它们并行运行(并使用py.test来获得更好的报告):

  

结果= $(日期" +结果%Y%m%d-%H%M%S.html")

     

py.test / Users / jdoe / Documents / workspace / Unit \ Tests \ 2 / UnitTests2Package / Python-Selenium / Tests_P2A.py --html = $ results --self-contained-html

     

打开$ results

希望有一天我们可以通过相同的测试方法并行运行多个设备,但在此之前,这是我能想到的最好的设备。

答案 1 :(得分:1)

capabilities.setCapability(UDID_KEY, UDID_VALUE);

UDID_VALUE对每个设备都是唯一的。

可以在cmd上使用adb设备。