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

posted @ 2020-10-04 00:52  依羽杉  阅读(345)  评论(0)    收藏  举报