cmd下并行执行appium +maven+Testng test

1:

first: open two command wins to start appium:

appium -p 4725 -bp 4726 -U EP7333W0UR

appium -p 4723 -bp 4724 -U 3a2acab

thus,appium server for the devices has started

2:

go to the directory of the project :

cd /Users/huangxiaoshi/Documents/eclipse/Test2

3:

import the lib files:

mvn dependency:copy-dependencies -DoutputDirectory=lib

4:

decode to produce the class file :

mvn clean test

5:

finally execute :

java -classpath "/Users/huangxiaoshi/Documents/eclipse/Test2/target/test-classes/:/Users/huangxiaoshi/Documents/eclipse/Test2/lib/testng-6.3.1.jar" -Djava.ext.dirs=lib org.testng.TestNG -suitethreadpoolsize 2 testng1.xml testng2.xml

if you have set the CLASSPATH  of /Users/huangxiaoshi/Documents/eclipse/Test2/lib/testng-6.3.1.jar

you can execute like this:

java -classpath "/Users/huangxiaoshi/Documents/eclipse/Test2/target/test-classes/" -Djava.ext.dirs=lib org.testng.TestNG -suitethreadpoolsize 2 testng1.xml testng2.xml

6:

check the test output files.

下方转自:https://testerhome.com/topics/1639

一、测试类*注1

package com.testerhome;

import io.appium.java_client.android.AndroidDriver;

import java.net.MalformedURLException;
import java.net.URL;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;

public class Suite1 {
    public String port;
    public String udid;
    private AndroidDriver driver;

  @Test
  public void switches() throws InterruptedException {
      WebElement sound = driver.findElementByAndroidUIAutomator("new UiSelector().text(\"Sound\")");
      sound.click();
      System.out.println("checked");
      Thread.sleep(2000);
      System.out.println(Thread.currentThread());
  }

  @BeforeSuite
  @Parameters({ "port", "udid" })
  public void beforeSuite(String port, String udid) {
      this.port = port;
      this.udid = udid;

  }

  @BeforeClass
  public void beforeClass() throws MalformedURLException{
        System.out.println(“port is ” + port + “, udid is " + udid);

        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("deviceName","device");
        capabilities.setCapability("automationName","Appium");
        capabilities.setCapability("platformVersion", "4.4");
        capabilities.setCapability("udid", udid);
        capabilities.setCapability("appPackage", "com.android.settings");
        capabilities.setCapability("appActivity", ".Settings");
        driver = new AndroidDriver(new URL("http://127.0.0.1:" + port + "/wd/hub"), capabilities);

  }

  @AfterClass
  public void afterClass() {
      driver.quit();

  }

}

二、连接两个 Android 设备或启动两个虚拟机
使用
adb devices
获取 udid

三、项目路径下新建两个 testng.xml
testng1.xml

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite1">
  <parameter name = "port" value = "4723"/>
  <parameter name = "udid" value = "emulator-5554"/>
  <test name="Test">
    <classes>
      <class name="com.testerhome.Suite1"/>
    </classes>
  </test>
</suite>  

testng2.xml

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite2">
  <parameter name = "port" value = "4725"/>
  <parameter name = "udid" value = "emulator-5556"/>
  <test name="Test">
    <classes>
      <class name="com.testerhome.Suite1"/>
    </classes>
  </test>
</suite>  

四、开启两个 appium server *注2、注3
如果命令行启动加参数
appium -p 4723 -bp 4724
appium -p 4725 -bp 4726

如果是图形界面,修改:
第一个:
General Settings 里的 Port ,改为4723
Android Settings 里的 Bootstrap Port ,改为4724

第二个:
General Settings 里的 Port ,改为4725
Android Settings 里的 Bootstrap Port ,改为4726

五、导出依赖*注4
因为是用 maven 工程创建的,所以先导出依赖到项目路径下的lib文件夹
mvn dependency:copy-dependencies -DoutputDirectory=lib

六、执行测试
先用 Maven 串行执行一次以编译出Class文件
mvn clean test
然后
java -classpath ".\target\test-classes" -Djava.ext.dirs=lib org.testng.TestNG -suitethreadpoolsize 2 testng1.xml testng2.xml
如果没有配置TestNG环境变量
java -classpath ".\target\test-classes;D:\Programs\testng-6.8\testng-6.8.jar" -Djava.ext.dirs=lib org.testng.TestNG -suitethreadpoolsize 2 testng1.xml testng2.xml

七、查看报告
默认在项目路径下的 test-output 文件夹

注1:
这个测试类没有指定 app 路径,如果指定,同时 unzip 的时候会冲突。目前是复制了多个 apk 。
File app = new File(appDir, "AppName"+port+".apk");
并在appium server指定不同的临时文件路径,比如:
--tmp D:\tem1
--tmp D:\tem2

注2:
两个端口的介绍可以看这两个链接:
appium 自动化测试教程 ppt(第二版)
Appium Android Bootstrap源码分析之简介

注3:
如果使用到 Selendroid 或 Chromium ,还需要指定其他端口(需要修改测试类)
Selendroid port:8080
Selendroid port:8081
Chromium port:9515
Chromium port:9516

注4:
本来准备直接用 mvn test 并行执行的,但没试出来传 suitethreadpoolsize 参数的办法

时间: 2024-09-29 23:06:32

cmd下并行执行appium +maven+Testng test的相关文章

Jenkins+Saucelabs+Git+Appium+Maven+TestNG+ReportNG之环境搭建与运行

1 背景 最近学了利用Appium+Maven+TestNG(ReportNG)搭建全自动化测试环境,使用https://saucelabs.com/ 网站提供的VM平台(可以手动测试与自动化测试,并且可以多线程多设备并行测试Web,Android与IOS),通过Jenkins从Git下载测试代码并触发运行,实现真正意义上的完全自动化测试. 2 环境搭建流程与运行 下面我们从零开始以搭建环境到运行一个Demo为例来说明整个流程,具体如下步骤即可. 一.jdk 安装与Java环境变量与adb配置

appium+Java+testng自动化框架搭建-第一季

app自动化越来越火,随着移动app的不断发展,手机端测试日益火爆,想成为一个高级软件测试工程师必须要掌握,那么我们今天就来搭建appium+Java+testng自动化测试框架. Appium环境搭建(Windows版) 在网络上看到很多教程,今天安装了appium,把安装过程详细记录一遍,如下图: 我的电脑环境是win7 64位 注:appium安装到C盘,node.js安装到C盘 一.安装node.js 1.安装node.js nodejs 官网下载地址:https://nodejs.or

win7下搭建appium+python文档

一:安装node.js 1.双击这个软件 2.一键安装,全都下一步,不要私自更改安装路径 3.打开cmd,输入npm,出现如下截图表示成功 二:安装appium 1.双击appium-installer.exe 2.一键安装,全都下一步,不要私自更改安装路径,记住安装路径,记住勾选创建桌面快捷方式,部分截图省略. 3.双击桌面appium图标,出现以下报错, 一键安装 重新启动appium,出现以下报错 一键安装 再次启动appium,出现以下截图,说明appium安装成功 4.Path系统变量

windows下eclipse配置maven

windows下eclipse配置maven 一.maven安装 1.下载到http://maven.apache.org/download.cgi 上面下载对应的maven包2.解压将刚刚下载的包apache-maven-3.5.2-bin.zip解压3.设置环境变量1) 添加MAVEN_HOME,解压后的路径2) 在path末尾加入;%MAVEN_HOME%\bin4.测试是否成功打开终端cmd,输入mvn --version5.创建一个新的文件夹I:\apache-maven-3.5.2\

MySQL数据库在WIN系统CMD下的编码问题

MySQL数据库在WIN系统CMD下的编码问题 1. 查看MySQL数据库编码 * SHOW VARIABLES LIKE 'char%'; 2. 编码解释 * character_set_client:MySQL使用该编码来解读客户端发送过来的数据,例如该编码为UTF8,那么如果客户端发送过来的数据不是UTF8,那么就会出现乱码 * character_set_results:MySQL会把数据转换成该编码后,再发送给客户端,例如该编码为UTF8,那么如果客户端不使用UTF8来解读,那么就会出

CMD 下 进入 ORACLE

1.sqlplus /nolog 2.connect sys/orcl@ORCL as sysdba 3.select sysdate from dual exit; CMD 下 进入 ORACLE,码迷,mamicode.com

在CMD下启动vmware、Xshell连接虚拟机以及控制Chrome浏览器自动执行js登录校园网

标题有点长,主要是写个bat出来玩玩, (1)不用每次都手动关闭mysql服务(我不想把它设为手动启动,有强迫症) (2)然后希望每次vmware能自动连上虚拟机 (3)以及每次Xshell都能自动启动,然后就连上虚拟机 (4)然后校园网每次都要打开,输入帐号密码什么的,才能连网,我希望它自己搞定 做完了这几步还是有点意思的,主要是浏览器还是网页的什么自动化测试,然后eclipse下项目打包成可执行的jar包 现在听我娓娓道来吧! 前面要达到的目的跟着后面的命令并无关联 (1)首先在bat里面关

Windows下搭建appium(Android版)

1.安装node.js 说明:安装node.js是为了可以使用它的npm,可以用npm install很方便的安装它包含的包,appium server使用node.js编写的 下载地址:https://nodejs.org/en/ 默认安装,会自动将node.js添加到环境变量path中去,如果path没有加进去,手动加一下 查看是否安装成功:cmd中使用node -v查看版本 2.安装Android的sdk包 说明:sdk是Android的软件开发工具包. 下载地址:http://andro

Windows CMD下一些有用的命令

2014.06.27 C:\Users\wsc>route print ===========================================================================接口列表 12...08 10 76 c1 5c 56 ......Realtek RTL8188CU Wireless LAN 802.11n USB 2.0 Network Adapter 11...b8 97 5a 09 76 ca ......Qualcomm Athe