使用TestNG运行Appium并行测试

appium 通过testng 实现在不同的测试机上并行执行测试用例 在不同设备上同时运行不同的测试用例,在此使用两个安卓设备,均是安卓5.0,其中一个是模拟器,一个是真机 操作步骤如下: 1、测试类的代码如下: public class Case {    private AndroidDriver driver; //    @Parameters({"port","udid"})     @Test(dataProvid 阅读详情

 

 

先决条件:

  • 了解TestNG。请参考TestNG教程。
  • Node.js应该安装在机器上。

 

程序:

  • 到目前为止,我们已经在MAC中的Windows / Appium.app中使用Appium.exe启动了Appium。我们将启动/运行Appium,它被分配为仅运行一个实例。
  • 要运行多个实例,我们需要启动/运行多个Appium服务器来执行此操作,我们将使用Node.js的帮助。

 

启动初始实例: 

1)现在打开命令提示符 将目录更改为Appium安装位置C:\ Program Files(x86)\ Appium \ node_modules \ appium \ bin
使用TestNG进行Appium并行执行

Appium_TestNg_5
3)现在输入命令:  node appium.js -a 127.0.0.1 -p 1234 -cp 1234 -bp 2345
Appium_TestNg_6

注意到First实例是使用URL:0.0.1:1234 / wd / hub创建的

 

关于命令的描述:

  • Node Appium.js:使用位于该位置的Appium.js的节点启动实例,以提供Appium服务器参数
  • 对于地址,我们必须传递“ -a ”,其地址为“127.0.0.1”:“ - a 127.0.0.1 ”
  • 对于端口,我们必须传递带端口号的“ -p”,端口号为“ 1234”:“ - p 1234 ”
  • 对于callbackPort,我们必须传递带有端口号的“ -cp”,端口号为“ 1234”:“ - cy 1234 ”
  • 对于BootstrapPort,我们必须传递带端口号的“ -bp”,端口号为“ 2345”:“ - bp 2345 ”

 

启动第二个实例:

1)按照相同的步骤,但现在打开另一个命令提示符。

2)使用不同的地址,端口,callbackPort和BootstrapPort提供命令,如下所示:node appium.js -a 127.0.0.2 -p 3456 -cp 3456 -bp 4567

3)使用URL:0.0.2:3456 / wd / hub创建第二个实例

现在两个命令提示都运行不同的Appium服务器实例。
Appium_TestNg_7
了解了如何启动多个Appium服务器实例。现在是时候准备好脚本了。

以下是TestNG中参数化的下面代码

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

package appium_Package;

import org.testng.annotations.Test;

import io.appium.java_client.MobileElement;

import io.appium.java_client.android.AndroidDriver;

import org.testng.annotations.BeforeMethod;

import org.testng.annotations.Parameters;

import java.io.File;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.remote.CapabilityType;

import org.openqa.selenium.remote.DesiredCapabilities;

import org.testng.annotations.AfterMethod;

public class Appium_TestNG_Sample_One {

private static AndroidDriver<MobileElement> driver;

 

@Test

public void f() {

}

 

@Parameters({ "deviceName_","UDID_","platformVersion_", "URL_" })

@BeforeMethod

public void beforeMethod(String deviceName_,String UDID_,String platformVersion_,String URL_) throws MalformedURLException, InterruptedException {

File classpathRoot = new File(System.getProperty("user.dir"));

File appDir = new File(classpathRoot, "/Apps/Amazon/");

File app = new File(appDir, "in.amazon.mShop.android.shopping.apk");

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability(CapabilityType.BROWSER_NAME, "");

capabilities.setCapability("deviceName", deviceName_);

capabilities.setCapability("udid", UDID_);

capabilities.setCapability("platformVersion", platformVersion_);

capabilities.setCapability("platformName", "Android");

capabilities.setCapability("app", app.getAbsolutePath());

capabilities.setCapability("appPackage", "in.amazon.mShop.android.shopping");

capabilities.setCapability("appActivity", "com.amazon.mShop.home.HomeActivity");

driver = new AndroidDriver<MobileElement>(new URL("http://"+URL_), capabilities);

driver.manage().timeouts().implicitlyWait(80, TimeUnit.SECONDS);

Thread.sleep(10000);

}

 

@AfterMethod

public void afterMethod() {

}

}

 

现在,这些参数通过两个不同的测试从​​TestNG.xml传递。下面是xml文件。

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite" parallel="tests" thread-count="2" >

<test name="Test1">

<parameter name="deviceName_" value="device_One"/>

<parameter name="UDID_" value="UDID_One"/>

<parameter name="platformVersion_" value="Version_One"/>

<parameter name="URL_" value="127.0.0.1:1234/wd/hub"/>

<classes>

<class name="appium_Package.Appium_TestNG_Sample_One"/>

</classes>

</test> <!—Test 1 -->

<test name="Test2">

<parameter name="deviceName_" value="device_Two"/>

<parameter name="UDID_" value="UDID_Two"/>

<parameter name="platformVersion_" value="Version_Two"/>

<parameter name="URL_" value="127.0.0.2:3456/wd/hub"/>

<classes>

<class name="appium_Package.Appium_TestNG_Sample_One"/>

</classes>

</test> <!—Test 2 -->

</suite> <!-- Suite -->

 

现在是时候连接两个设备(USB / Wifi)了。确定设备是否与系统连接,“ ADB ”可以通过命令提示符中的以下命令访问它:“ adb devices ”。然后在获取连接设备列表后,记下设备的UDID ,并在testNG.xml中提供设备名称,平台版本和不同实例的URL。

 

现在,它右键单击TestNG.xml-> RunAs-> TestNG Suite

观察两个设备中设备的执行情况。

 

Appium Android ——利用 TestNG 并行执行用例 Appium是一个流行的移动应用自动化测试工具,它可以用于测试Android应用程序。TestNG是一个功能强大的测试框架,它提供了丰富的功能和灵活的配置选项,可以帮助测试人员编写和执行测试用例。 阅读详情

相关推荐

Appium+TestNG+Grid并行运行测试用例

通过启动grid hub服务,注册多个节点设备,然后配置相应的testng.xml文件,达到并行运行测试的目的。     目前有两种方式启动多个Appium Server 一种是npm安装Appium的,用命令行来启动;一种是直接在Appium UI端设置和添加json文件,手动来启动。     本文采用的是用Appium 客户端直接启动服务。 步骤: 1,启动Seleniu

maryshine的博客 3154

Jenkins + TestNG 实现自助式自动化测试平台

本文介绍了如何使用 Jenkins 和 TestNG 实现满足复杂测试需求的”自助式”自动化测试平台。该方案以 Jenkins 作为平台的基础,结合功能强大的插件及系统配置,部署基于 TestNG 的自动化测试包,并提供了友好的 Web 访问界面。项目成员可以在任何时间和地点,通过浏览器访问该平台,而且可以按照不同需求选择测试环境、测试集、测试用例,并提交自动化测试请求,达到真正的“自助式”自动化测试。该平台它可以极大地提高开发和测试团队自动化脚本的使用效率和便捷性。

软件测试技术资源分享官 1366

TestNG系列教程:并行执行测试

TestNG系列教程:并行执行测试 目录 1. 并行执行测试的优势 2. 如何并行地执行测试方法 3. 如何并行地执行测试类 4. 如何并行地执行同一测试套件内的各个测试组件 5. 如何配置需要在多线程环境中执行的测试方法

TestNG框架 在AndroidStudio上部署真机测试

TestNG框架 在AndroidStudio上部署真机测试1.环境配置1.1 目录结构1.2 gradle下载1.3 gradle配置2. 运行测试用例 本文代码参考链接:https://blog.youkuaiyun.com/weixin_39451323/article/details/114030393 1.环境配置 1.1 目录结构 在android手机上运行用例,需要将test代码放在androidTest文件夹下(单元测试则放在test文件夹下),否则无法运行。 目录结构 1.2 gradle下

weixin_39451323的博客 1171

Appium+TestNG自动化测试

自己整理的使用Appium+TestNG实现的Android自动化测试。包括安装配置、真机测试说明和一个简单的Android App源码、一个针对该App的测试

Appium使用po实例和封装打包

Appium使用po实例和封装打包,包含断言、po封装,还有几个例子。专栏地址:https://blog.youkuaiyun.com/niubitianping/category_6414306.html

TestNG框架 在AndroidStudio上部署单元测试

TestNG框架 1.什么是TestNG2.注解使用与实操(PC端)2.1 基本测试@Test和@BeforeMethod、@AfterMethod、@BeforeClass和@AfterClass2.2 套件测试2.2.1 @BeforeSuite、@AfterSuite、@BeforeTest和@AfterTest注解方法2.2.2 忽略测试@Test(enable=false)2.3 分组测试2.3.1 方法分组 @Test(groups="xxx")、@BeforeGroups、@AfterGrou

weixin_39451323的博客 1070

基于eBPF的零侵入LLM智能体观测:AgentSight架构与实战

在分布式系统和云原生架构中,可观测性是保障应用稳定运行与高效排障的核心能力。其原理在于通过日志、指标和追踪三大支柱,从外部视角持续收集和分析系统状态,而非依赖应用内部埋点。这一技术价值在于能以统一、低开销的方式,理解复杂系统的内部行为,尤其在微服务、容器化及Serverless等动态环境中至关重要。应用场景广泛覆盖了性能监控、安全审计、故障诊断与根因分析。当我们将这一基础理念应用于当下快速发展的AI智能体领域时,便自然引出了对LLM智能体进行无侵入、系统级行为观测的需求。传统的应用层方案需要集成SDK,对闭

weixin_28696185的博客 324

TestNg如何进行并行测试

TestNG提供了一种灵活的方式来配置并行测试。可以通过在测试方法的@Test注解上配置一些信息来启用多线程模式。这样,基于TestNG测试组件的配置,多个线程可以同时启动并分别执行各自的测试方法。相对于传统的单线程执行测试的方式,多线程方式可以减少测试运行时间,并且可以验证某段代码在多线程环境中的正确性。

qq_39522022的博客 951

WOFOST模型参数调优实战:从‘跑不通’到‘预测准’的避坑指南

本文详细介绍了WOFOST模型参数调优的实战技巧,帮助用户从模型报错诊断到参数敏感性分析,再到土壤-作物参数联调策略,逐步解决‘跑不通’到‘预测准’的问题。通过Python和PCSE工具,提供参数扰动测试模板和关键参数优先级矩阵,助力作物模型的高效校准与预测。

weixin_32597009的博客 622

POST 接口,将参数拼接到 URL 上,而不是将其作为表单数据发送

POST 接口,将参数拼接到 URL 上,而不是将其作为表单数据发送

pig_ning的博客 3147

在携程使用TestNG/JUnit 并行跑Appium 有两个关键的地方

转载地址:https://testerhome.com/topics/1944 在携程使用TestNG/JUnit 并行跑Appium 有两个关键的地方: 独立使用的Appium Server Wrapper 控制并行的Device Store Queue Word is Cheap,示例代码如下(公布这些代码是希望大家更多的精力放到改进Appium本身

可口可乐的博客 1630

保姆级教程:用OpenCV搞定鱼眼双目相机的标定与测距(附完整C++代码)

本文详细介绍了使用OpenCV进行鱼眼双目相机标定与测距的全流程,包括环境搭建、数据采集、单目标定、双目标定、立体校正和视差计算等核心步骤。通过完整的C++代码示例和参数调优指南,帮助开发者快速实现高精度的双目测距系统,适用于机器人导航、VR全景拍摄等领域。

weixin_42573113的博客 388

应用程序的并行设置_Appium Cucumber TestNG并行移动测试自动化

大家好,在这篇文章中,我会向你解释一个移动测试自动化框架,它支持与TestNG和Appium以及Cucumber一起使用TestNG和Appium的Page Object Model。 在这个框架中,您可以使用任何方法编写移动测试自动化测试并且并行运行它们。 在开始这篇文章之前,我强烈建议你从下面的appium文章开始。 我将扩展无线设备实验室架构,我将在本文中添加一个appiumCucumber...

weixin_39894233的博客 395

【QNX+Android虚拟化方案】00 - 系列文章链接汇总

【QNX+Android虚拟化方案】00 - 系列文章链接汇总

|~~~热爱生活、努力学习的小伙汁~~~| 1万+

Vue - 解决 Property or method “__v_isRef“ is not defined on the instance but referenced(浏览器控制台报错,代码没错)

vue,vue2控制台报错,vue报错Propertyormethod"__v_isRef"isnotdefinedontheinstancebutreferenced,vue代码没问题,但是报错Propertyormethod"__v_isRef"isnotdefinedontheinstancebutreferenced,vue2如何解决报错,vue怎么解决报错问题,vue2Propertyormethod"__v_isRef"isnotdefi

🏆 前端领域优质创作者 4503

测试方案_自动化测试效率提升方案

本文注重自动化测试用例并行方案的设计,忽略了具体代码实现的细节。代码实现细节大家利用网络资源可以轻松搜索到相关内容!目前业界主流提升测试效率的方案如下:自动化测试脚本并行运行;编写自定义类库解决自动化api无法提供的功能或者对工具提供的api进行二次封装,核心就是增强脚本健壮性;自动化脚本执行完毕后,自动发送测试报告给相关责任人,使其第一时间了解自动化测试结果;自动化测试提升关于自动化测试中编写脚...

weixin_29083475的博客 487

论文阅读:arxiv 2023 EduChat: A Large-Scale Language Model-based Chatbot System for Intelligent Education

EduChat是一个基于大规模语言模型(LLM)的教育领域聊天机器人系统,旨在为教师、学生和家长提供个性化、公平且富有同理心的智能教育服务。该系统通过在教育语料库上进行预训练和特定任务微调,强化了开放式问答、作文评估、苏格拉底式教学和情感支持等教育功能。为解决领域知识不足和知识更新问题,EduChat采用了检索增强技术,并融入心理学和教育学理论。该项目已开源,提供代码、数据和模型参数,推动LLM在智能教育中的应用发展。

CSPhD-winston的博客 1039

Appium 结合 TestNG 并行执行测试

TestNG(Next Generation)下一代单元测试框架技术,在这之前 Junit 在 Java 世界中是主流的选择,由于 TestNG 的强大和易用性,现在已逐步取代 Junit 成为最流行的单元测试框架技术。TestNG 优点TestNG 与 Junit 是比较类似的,但是与其相比提供了更为强大的特性并且更加易用,包括不仅限于更加丰富的注解超时、异常测试参数化测试并行测试。

2401_85696278的博客 816

STM32F407驱动OV2640摄像头全栈解析:DCMI+DMA+SCCB协同设计

图像采集是嵌入式视觉系统的基石,其核心在于传感器与MCU间的数据通路构建。原理上需理解并行接口(如DCMI)的硬件同步捕获机制、串行控制总线(如SCCB/I²C)的寄存器级配置逻辑,以及DMA在高吞吐数据搬运中的关键作用。技术价值体现在解放CPU、保障实时性、降低功耗,并支撑JPEG压缩与RGB565直显等差异化应用。典型场景包括智能终端实时预览、低带宽图像上传、工业现场视频监控及教学实验平台搭建。本文以STM32F407与OV2640集成实践为载体,深入剖析DCMI时序约束、SCCB软件模拟实现及DMA循

weixin_36151775的博客 180

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Appium+Java+Testng 多设备并行测试

看了好多帖子,最后还是看【官网】介绍解决了多设备并行 这里不做appium安装介绍,自行百度了解 项目目录截图:(只需要看Test文件、pom.xml、testng.xml的内容) 首先需要启动appium服务(设置端口启动服务) pom.xml设置(注意 testng.xml 的设置) <?xml version="1.0" encoding="UTF-...

paroleg的博客 1326

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java + TestNG + Appium 实现单机多个Android终端并发测试

前言我们知道,单台 PC 上用 Appium 连接多个 Android 终端进行测试时,需要同时用不同的端口号启动不同的 Appium Server,例如启动两个服务器:node main.js -p 4723 -bp 4724 -chromedriver-port 9515 -U emulator1 node main.js -p 4725 -bp 4726 -chromedriver-port

持续学习 7758

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: 使用Macaca Inspector从App中提取Xpath
下一篇: 在Mac OS上安装Eclipse
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值