zoukankan      html  css  js  c++  java
  • TestNg用例管理

    一、TestNg的数据驱动

    1. 数据驱动

    1)什么是数据驱动?

    ·数据驱动是指在一个脚本固定的情况下,用数据来控制该脚本是否运行,以及运行的次数,还有每次运行时对应的参数

    2)数据驱动的应用场景:

    ·比如我们在测试登录时,要测试用不同的账户登录,难道我们需要针对每一个账户去写一个脚本吗?这样显然是不明智的,于是,testng为我们提供了这个注脚,让我们只需要提供出数据,就可以控制脚本运行次数及相应的参数。

    2. TestNg数据驱动(数据源)

    1)实现方式:

    ·用注脚: @DataProvider

    2)示例:

    第一种实现方式:不指定name

     运行结果:

    第二种方式:指定name

     运行结果:

    二、TestNg用XML运行

    TestNg的几种运行方式:

    1. 以method为基点

    <?xml version="1.0" encoding="UTF-8"?>
    <suite name="Suite" verbose="1" parallel="false" thread-count="1">
    	<test name="test1">
    		<classes>
    			<class name="com.test.ng1.test1">
    				<methods>
    					<include name="test2"/>
    					<include name="test1"/>
    				</methods>
    			</class>
    		</classes>
    	</test>
    </suite>
    

    运行结果:

    2. 以class为基点

    <?xml version="1.0" encoding="UTF-8"?>
    <suite name="Suite" verbose="1" parallel="false" thread-count="1">
    	<test name="test1">
    		<classes>
    			<class name="com.test.ng1.test1">
    			</class>
    		</classes>
    	</test>
    </suite>
    

    运行结果:

     3. 以package为基点

    <?xml version="1.0" encoding="UTF-8"?>
    <suite name="Suite" verbose="1" parallel="false" thread-count="1">
    	<test name="test1">
    		<packages>
    			<package name="com.test.ng1"/>
    		</packages>
    	</test>
    </suite>
    

    三、TestNg用例管理

    1. 用例管理原则——用例独立少依赖

    package com.test.ng1;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.BeforeMethod;
    import org.testng.annotations.DataProvider;
    import org.testng.annotations.Test;
    import org.testng.annotations.AfterClass;
    import org.testng.annotations.AfterMethod;
    public class test1 {
    	//无名的数据驱动,调用可以使用方法名
    	@DataProvider
    	public Object[][] logindata(){
    		return new Object[][]{{"a"},{"b"}};
    	}
    	//因为数据驱动没有名字,搜易可以写方法名
    	@Test(dataProvider="logindata")
    	public void test1(String info){
    		System.out.println(info);
    	}
    	//为数据驱动定义名字
    	@DataProvider(name="longoutdata")
    	public Object[][] logoutDataInfo(){
    		return new Object[][]{{"1"},{"2"}};
    	}
    	//指定数据驱动的名字,而非方法名
    	@Test(dataProvider="longoutdata")
    	public void test2(String info){
    	System.out.println(info);
    	}
    	@BeforeClass
    	public void bClass(){
    		System.out.println("BeforeClass");
    	}
    	@AfterClass
    	public void aClass(){
    		System.out.println("AfterClass");
    	}
    	@BeforeMethod
    	public void setUp(){
    	System.out.println("beforemethod,setUp");
    	}
    	@AfterMethod
    	public void tearDown(){
    	System.out.println("aftermethod,tearDown");
    	}
    }
    


    ————————————————
    版权声明:本文为CSDN博主「jffhy2017」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/jffhy2017/article/details/60972253

  • 相关阅读:
    mysq 日期相减
    说说时间观与时间管理——北漂18年(71)
    ionic之切换开关
    ionic之单选框
    SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE locks在RR模式下可以看到最新的记录
    14.5.2.3 Consistent Nonlocking Reads 一致性非锁定读
    14.5.2.2 autocommit, Commit, and Rollback
    14.5.2 事务隔离级别
    对于唯一索引使用唯一条件搜索, InnoDB 只锁定找到的index record,不是它之前的区间
    mysql explain 解释
  • 原文地址:https://www.cnblogs.com/hkgov/p/11867232.html
Copyright © 2011-2022 走看看