自动化测试过程中使用testng管理测试用例是常规的做法,我们需要对它的特性有一个深入的了解和认识:

testng的原理:

参考:https://blog.csdn.net/dm_vincent/article/category/1162831

testng基于拓扑排序管理测试用例套件:

拓扑排序最经典的应用场景就是对于Jobs/Tasks的规划,即对于存在前后依赖关系的任务如何安排一个计划来执行它们。

相关的资料,可以参考维基百科:

http://en.wikipedia.org/wiki/Topological_sorting里面介绍的比较详细。

testng的常规使用:

一、 testng的测试用例部分

1、 测试用例如何设置优先级? 如何分组?

/**
* @author XXX
* @Comment xxx
* @throws Exception
*/
@Test(priority = 0, groups = { "Debug", "IM" }, description = "mobile-9118:添加群-需要身份验证",enabled="false",timeout="1000",
invocationCount=5,
) public void testAddGroup() throws Exception { //测试代码部分 logger.info("添加群组成功"); }

看上面代码部分,@test里面的priority确定了优先级,数字越小,越优先执行;

  • description : 测试方法描述信息。(建议为每个测试方法添加有意义的描述信息,这将会在最后的测试报告中展示出来)
  • enabled : 默认为true,如果指定为false,表示不执行该测试方法。
  • timeout : 指定整个测试方法的超时时间。单位是毫秒。
  • invocationCount : 指定测试方法需要被调用的次数。一般运用在性能测试,例如执行500次
  • alwaysRun : 如果=true,表示即使该测试方法所依赖的前置测试有失败的情况,也要执行

分组的话,需要和testng.xml进行配合,在xml里面配置了运行的group 就只会跑这一部分:

<suite name="Suite1">
<test name="login">
<groups>
<run>
<include name="group1" />
<exclude name="group2" />
</run>
</groups>
<classes>
<class name="com.TestngGroups" />
</classes>
</test>
</suite>

2. tsetng读取第三方数据源

使用dataprovider的时候,有2种方式可以传入参数:

  2.1.返回类型是Iterator<Object[]>,不用管有多少组测试数据,可以抽取出来以map的id为参数作为公用的提取数据方法。

  2.2.返回类型是Object[][],明确知道有几组测试数据--可以用hashmap传入

下面的代码是一个例子,通过读取excel,将列名作为map的key值,对应的excel 值作为value, 测试的时候可以直接使用data.get("l列名")获取数据

 @DataProvider(name = "interfaceTestData")
public Object[][] data() throws IOException {
Properties properties = new Properties();
// 使用InPutStream流读取properties文件
String Path = System.getProperty("user.dir") + File.separator + "config.properties";
BufferedReader bufferedReader = new BufferedReader(new FileReader(Path));
BufferedInputStream buff = new BufferedInputStream(new FileInputStream(Path));
properties.load(new InputStreamReader(buff, "utf-8")); // properties.load(bufferedReader);
String filePath = properties.getProperty("excelFilePath");
System.out.println(filePath);
excelTest testcase = new excelTest();
return testcase.testData(filePath);
} @Test(description = "接口自动化测试", dataProvider = "interfaceTestData")
public void interTest(Map<String, String> interData) {
     
    //获取Map里面对应的数据
    String caseId = interData.get("用例ID");
    String casename = interData.get("用例名");
    //测试代码
}

testng.xml 详解

这个可以参考上一个博客: https://www.cnblogs.com/Ronaldo-HD/p/9235210.html

给个通常用的例子:

listeners : 监听器,可以生成多份测试报告

test: 需要测试的类,包含的method 就是需要执行多线程的method

parallel:  需要进行多线程的method名字,需搭配thread-count使用

thread-count: 并发的线程数量,默认为5

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="memory test" parallel="tests" thread-count="2" >
<listeners>
<listener class-name="org.reportng.HTMLReporter" />
<listener class-name="org.reportng.JUnitXMLReporter" />
</listeners>
<test verbose="2" name="XXXXX">
<classes>
<class name="appium.XXXX.testcase.Test">
<methods>
<include name="xxxx"></include>
</methods>
</class>
</classes>
</test>
<test verbose="2" name="MEM">
<classes>
<class name="appium.xxx.manage.MemInfo">
</class>
</classes>
</test>
</suite>

Testng 常用总结的更多相关文章

  1. 【转】TestNG常用注解

    http://blog.csdn.net/d6619309/article/details/52435084 TestNG的注解大部分用在方法级别上.常用的注解列举如下: 1. Before类别和Af ...

  2. TestNG常用注解

    原文链接:https://www.yiibai.com/testng/basic-annotations.html    以下是TestNG支持的注释列表: 注解 描述 @BeforeSuite 在该 ...

  3. testNG常用用法总结

    一.testNG介绍 TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit,   功能都差不多, 只是功能更加强大,使用也更方便 Java中已经有一个JUnit的测试框架了.  T ...

  4. testNG 常用的注解

    常用注解介绍: @BeforeSuite 在该套件的所有测试都运行在注释的方法之前,仅运行一次 @AftereSuite 在该套件的所有测试都运行在注释方法之后,仅运行一次 @BeforeClass  ...

  5. TestNG学习-002-annotaton 注解概述及其执行顺序

    此文主要讲述用 TestNG 基础的 annotation (注解)知识,及其执行的顺序,并通过一个 TestNG 简单的实例演示 annotation 的执行顺序. 希望能对初学 TestNG 测试 ...

  6. 5.6 TestNg的使用

          Java语言编写的WebDriver测试程序通常使用单元测试框架运行.TestNG单元测试框架比JUnit单元测试框架更强大,它提供了更多的扩展功能.目前很大一部分自动化测试工程师已经开始 ...

  7. TestNG操作详解

    运行测试步骤方法有如下两种: 1. 直接在Eclipse运行testNG的测试用例, 在代码编辑区域鼠标右键, 选择Run as ->testNG Test 2. 在工程的根目录下, 建立tes ...

  8. IDEA+TestNG

    1.常用注解 2.手把手教你掌握必备测试框架testNG:http://www.51testing.com/zhuanti/TestNG.htm [testNG常用注解] 1 @Test:标记一个类或 ...

  9. TestNG详解(单元测试框架)

    一.TestNG的优点 1.1 漂亮的HTML格式测试报告 1.2 支持并发测试 1.3 参数化测试更简单 1.4 支持输出日志 1.5 支持更多功能的注解 二.编写TestNG测试用例的步骤 2.1 ...

随机推荐

  1. python大法好——变量、常量、input()、数据类型、字符串、格式化输出、运算符、流程控制语句、进制、字符编码

    python基础知识 1.变量 变量:把程序运算的中间结果临时存到内存里,以备后面的代码可以继续调用. 作用:A.存储数据. B.标记数据. 变量的声明规则: A:变量名只能是字母,数字或下划线任意组 ...

  2. 浅析USB HID ReportDesc (HID报告描述符)

    在USB中,USB Host是通过各种描述符来识别识别设备的,一般在设备枚举的过程将会获取有设备描述符/配置描述符/接口描述符/端点描述符/字符串描述符等 现在我们来介绍一下HID ReportDes ...

  3. Servlet基本_オブジェクトのスコープ

    1.スコープ種類Servletには以下のスコープがあります.Request.Session.Applicationの順にスコープは広くなっていきます.・Applicationスコープ:アプリケーション ...

  4. python语言中的数据类型

    一.内存管理 1.python解释器的垃圾回收机制 垃圾:当一个值上没有人绑定任何变量名时(当引用计数为0),该值就是一个垃圾. python解释器运行时会检测值的引用计数,当引用计数=0该值会被清除 ...

  5. NetStream 记录

    bufferLength : Number [只读] 数据当前存在于缓冲区中的秒数.(已进入缓冲区的秒数) bufferTime : Number 指定在开始显示流之前需要多长时间将消息存入缓冲区.( ...

  6. Haskell语言学习笔记(80)req

    req req 是一个好用,类型安全,可扩展,上层的HTTP客户端的库. $ cabal install req Installed req-1.1.0 Prelude> :m +Network ...

  7. 讲一讲Servlet的生命周期

    1 实例化    servlet 容器创建servlet的实例; 2初始化   该容器调用init()方法;   每个实例,init()方法只被调用一次 3 服务    如果请求Servlet,则容器 ...

  8. Android 操作UI线程的一些方法

    我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据.但是当数据取回来,需要显示到页面上的时候,会遇到一些小麻烦,因为我们都知道,android的UI页面是不允许在其他线程直接操作的.下面总结4 ...

  9. winform中datagridview刷新后的排序记忆

    datagridview先点标题排序,但是重新刷新之后,还是变成窗体加载后的样子 我这里用定时器刷新的. 1.先定义三个全局变量 /// <summary> /// 需要排序的列和方向 / ...

  10. windows和linux下如何远程获取操作系统版本和主机名

    远程获取windows和linux操作系统版本和主机名需要具备以下条件: 假设 主机A(windows 7),ip:192.168.12.2 主机B(centos 6.3),ip:192.168.12 ...