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

  • 相关阅读:
    kafka概念使用简介注意点
    spring boot整合log4j2
    postgresql和oracle数据库对比
    postgresql数据操作
    Django缓存序列化信号
    Django补充
    Git学习
    JavaScript语法和类型
    Django分页
    Vue:配置组件
  • 原文地址:https://www.cnblogs.com/hkgov/p/11867232.html
Copyright © 2011-2022 走看看