20200810_TestNG单元测试框架&App自动化环境部署
1、TestNG单元测试框架
1.1 TestNG单元测试框架断言
- 判断是否为True-Assert.assertTrue();
- 判断是否为false-Assert.assertFalse();
- 判断是否相等-Assert.assertEquals()
import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class Testng02 { @Parameters({"browserName","resetData"}) @Test(enabled = false) public void testLogin(String browserName,String resetData){ //String actualValue = "用户名不能为空"; //String expectedValue ="用户名不能"; //断言 //Assert.assertEquals(actualValue,expectedValue); //int i = 10; //Assert.assertTrue(i>10); //Assert.assertFalse(i==10); // /*if(actualValue.contains("用户名")){ Assert.assertTrue(true); }else { Assert.assertTrue(false); }*/ //Assert.assert } }
1.2 testng.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite" >
<test name="Test">
<classes>
<class name="com.test.day09.TestngTest" />
</classes>
</test>
</suite>
解释:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 文档类型定义(Document Type Definition) 规定文档语法编辑规则 <suite> 套件,根标签,通常由几个<test>组成,name为必须属性 <test> 测试用例,name为必须属性; <classes> 用例中包含的类,子标签为<class> <class> 测试类,其中属性name为必须属性
1.3 TestNG参数化
TestNG可以通过两种方式向测试方法传递参数:
- 通过testng.xml(使用parameter属性,值为一个参数数组,参数名与testNG.xml中的保持一致)
<suite name="Suite" parallel="false"> <test name="登录"> <classes> <class name="com.lemon.phoenix.LoginTest"/> </classes> </test> <parameter name="mobilephone" value="18588220000"/> <parameter name="password" value="123456"/> </suite>
public class LoginTest(){ @Test @Parameters(value = {"mobilephone","password"}) public void case01(String mobilephone, String password){ System.out.println("手机号码:"+mobilephone+",密码:"+password); } }
- testng.xml只能传递简单的参数,如果是循环遍历的使用不同的参数则可以通过DataProvider(数据提供者)
下面方法重要:
- 通过DataProvider:(利用此注解标注一个方法返回参数,返回值为一个Object类型的二维数组,若没有声明则为方法名。在测试方法上引用此dataprovider时需要指向对应的name值)
//针对同一个功能点进行测试时,指定数据提供者,注入测试数据到方法中 @Test(description = "测试1",dataProvider="getDatas") public void test(String name,String phone,String pwd) { //TODO } //使用DataProvider注解 @DataProvider public Object [][] getDatas(){ Object [][] datas = {{"","",""},{"aa","",""},{"aa","123456",""}}; return datas; }
数据提供者同时实现两个目的:
向测试方法传递任意数目的参数
根据需要,允许利用不同的参数集合对他的测试方法进行多次调用
public class Testng02 { @Test(dataProvider = "getDatas02") public void testRegister(String mobilephone, String password,String message){ System.out.print("注册时的数据:"); System.out.print("手机号码:"+mobilephone); System.out.println("密码:"+password); System.out.println("短信码:"+message); } //数据源 @DataProvider public Object[][] getDatas02(){ //支持多个参数 ,参数的个数由数据提供源的二维数组中的列数决定的 Object[][] arr = {{"13323234545","123456","2345"}, {"13323234444","lemon","1234"}, {"","123456","4567"}}; return arr; } @DataProvider public Object[] getDatas01(){ //数据提供源 --每一次传入一个参数(一维数组) Integer[] arr = {1,2,3,4,5,6,7,8,9}; return arr; } }
1.4 TestNG单元测试框架报告
- step1:edit configutation -->listeners-->use default reporters勾选上
- step2:选择testng.xml文件执行
- step3:代码的工程目录产生test-output目录,其中目录里面的index.html这支就是testng自带的报告

2、App自动化环境部署
什么是Appium
- Appium是一个开源的、跨平台的自动化测试工具,可用于app的自动化测试
- Appium是跨平台的,支持android,ios等操作系统下的app测试
- 扩充了Selenium WebDriver协议,在原有的基础上添加了移动端测试API
- 官网地址http://appium.io/
- Github地址https://github.com/appium/appium
2.1 Appium组件
- Appium Server-Appium的核心,实质上是一个web服务器,使用node.js实现
- Appium GUI--不推荐、过时-Appium Desktop的前身,已停止维护,封装的Appium Server是1.4.16
- Appium Desktop--Appium图形界面-内嵌了Appium Server,提供了GUI界面,还包括其他工具的整合(如Appium Inspector--类似于Chrome F12)
- Appium Client-客户端向Appium Server发起请求,可以用不同语言来实现,如Java:https://github.com/appium/java-client
2.2 App自动化测试环境搭建
- step1:配置Android SDK环境
- 概念
-
-
SDK(Software Development Kit)软件开发套件
-
ADB(Android Debug Bridge)是Android SDK的一个工具,用来对Android手机进行调试
-
步骤
- 下载Android SDK软件包(在网盘里面),解压配置Android SDK环境变量
1.配置ANDROID_HOME ,值就为SDK的家目录
2.在系统变量Path里面追加
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\build-tools\28.0.3
%ANDROID_HOME%\tools
- 重新打开CMD窗口,检测adb版本号(输入adb version)
step2:安装模拟器/准备真机
- 夜神模拟器-推荐 https://www.yeshen.com/
- 海马玩模拟器
- 雷电模拟器
- 逍遥模拟器
- genymotion
- bluestack
- 网易MuMu
- App应用商店:https://www.wandoujia.com/ 可以从这里下载一些App的安装包APK文件
step3:安装Appium-desktop
https://github.com/appium/appium-desktop
2.3 App页面元素探测工具
- Appium Inspector检查器 -- 识别App页面元素
- 注意:一定要讲对应的测试App装到模拟器里面
所需功能 - 启动测试App的配置
1. deviceName 设备名
模拟器:
- adb connect 127.0.0.0.1:62001 命令去链接到模拟器
- adb devices检测到设备名

2. platformName 测试的平台是为Android/ios 指定为Android即可
3. appPackage App包名-App身份标识 身份证
- 进入到cmd命令行模式
- 输入aapt dump badging APK包的路

4. appActivity App启动入口
- 进入到cmd命令行模式
- 输入aapt dump badging APK包的路径

UIAutomatorViewer -SDK里面自带App页面元素定位工具,简单些,但是对Android 7.0以上的系统兼容性不好
PS:部署App自动化环境的文章:https://www.cnblogs.com/yyoba/p/12395414.html

浙公网安备 33010602011771号