并行测试
Appium提供了一种方式以在一台设备上自动操作多个会话,也就是采用多个标识符的方式启动多个Appium服务器端从而实现测试并行执行,例如启动两个Appium服务器,第一个服务器Server Port设置为4723,Bootstrap Port设置为4724;第二个服务器Server Port设置为4725,Bootstrap Port设置为4726
提取Desired Capabilities
package org
.davieyang
;
public class Constants {
public class RedMi3{
public static final String deviceName
= "Redmi3";
public static final String udid
= "claeae297d72";
public static final String platformVersion
= "5.1.1";
public static final String platformName
= "Android";
public static final String appPackage
= "io.selendroid.testapp";
public static final String appActivity
= ".HomeScreenActivity";
public static final String unicodeKeyboard
= "True";
public static final String noSign
= "True";
}
public class RedMi4{
public static final String deviceName
= "Redmi4";
public static final String udid
= "claeae297d73";
public static final String platformVersion
= "6.1.1";
public static final String platformName
= "Android";
public static final String appPackage
= "io.selendroid.testapp";
public static final String appActivity
= ".HomeScreenActivity";
public static final String unicodeKeyboard
= "True";
public static final String noSign
= "True";
}
}
测试代码
package org
.davieyang
.testscripts
;
import java
.net
.URL
;
import io
.appium
.java_client
.android
.AndroidDriver
;
import io
.appium
.java_client
.android
.AndroidElement
;
import org
.testng
.Assert
;
import org
.davieyang
.Constants
;
import org
.openqa
.selenium
.WebElement
;
import org
.openqa
.selenium
.remote
.DesiredCapabilities
;
import org
.testng
.annotations
.AfterMethod
;
import org
.testng
.annotations
.BeforeMethod
;
import org
.testng
.annotations
.Parameters
;
import org
.testng
.annotations
.Test
;
public class TestParallelRunDemo1 {
AndroidDriver
<AndroidElement> driver
;
@BeforeMethod
@Parameters({"device_ID", "port"})
public void setUp() throws Exception
{
}
@Test
public void testWebApp(){
System
.out
.println("TestScripts");
}
@AfterMethod
public void TearDown(){
driver
.quit();
}
}
package org
.davieyang
.testscripts
;
import java
.net
.URL
;
import io
.appium
.java_client
.android
.AndroidDriver
;
import io
.appium
.java_client
.android
.AndroidElement
;
import org
.testng
.Assert
;
import org
.davieyang
.Constants
;
import org
.openqa
.selenium
.WebElement
;
import org
.openqa
.selenium
.remote
.DesiredCapabilities
;
import org
.openqa
.selenium
.NoSuchElementException
;
import org
.testng
.annotations
.AfterMethod
;
import org
.testng
.annotations
.BeforeMethod
;
import org
.testng
.annotations
.Parameters
;
import org
.testng
.annotations
.Test
;
import org
.openqa
.selenium
.By
;
public class TestParallelrundemo2 {
AndroidDriver
<AndroidElement> driver
;
@BeforeMethod
@Parameters({"device_ID", "port"})
public void setUp() throws Exception
{
}
@Test
public void testWebApp(){
System
.out
.println("TestScripts");
}
@AfterMethod
public void TearDown(){
driver
.quit();
}
}
配置testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite" parallel="tests" thread-count="2">
<test verbose="2" preserve-order="true" name="parallelRunDemo1">
<parameter name="device_ID" value="127.0.0.1"/>
<parameter name="port" value="4723"/>
<classes>
<class name="org.davieyang.testscripts.TestParallelRunDemo1">
<methods>
<include name="testWebApp"/>
</methods>
</class>
</classes>
</test>
<test verbose="2" preserve-order="true" name="parallelRunDemo2">
<parameter name="device_ID" value="127.0.0.1"/>
<parameter name="port" value="4725"/>
<classes>
<class name="org.davieyang.testscripts.TestParallelrundemo2">
<methods>
<include name="testWebApp"/>
</methods>
</class>
</classes>
</test>
</suite>
转载请注明原文地址:https://tech.qufami.com/read-1731.html