zoukankan      html  css  js  c++  java
  • TestNG的參数化測试、共享线程池配置、參数默认值配置

    在使用TestNG进行測试时,常常会使用到一些參数化配置,比方数据库、连接池、线程池数。

    使用TestNG的參数@Parameter注解进行自己主动化读取

    原创文章,版权全部。同意转载,标明出处:http://blog.csdn.net/wanghantong

    使用多线程的方式执行測试代码配置: 在'<suite>'标签中配置data-provider-thread-count="20"

    Java代码:

    /**
     * 
     * <p>
     * Title: TestngParameters
     * </p>
     * 
     * <p>
     * 參考配置文件testng-parameters.xml
     * Description:參数化測试在配置文件里配置可运行參数,使用@Parameters注解来调用, 注解中參数名称和类型必须和配置文件里一致
     * 
     * 多线程的測试:在'<suite>'标签中配置data-provider-thread-count="20"
     * </p>
     * 
     * <p>
     * Company:
     * </p>
     * 
     * @author : Dragon
     * 
     * @date : 2014年10月13日
     */
    public class TestngParameters {
    
    	// @Parameters注解内相应的參数名称和配置文件里的key必须是同样
    	@Parameters({ "first-name" })
    	@Test
    	public void testSingleString(String secondName) {
    		System.err.println("Invoked testString " + secondName);
    		assert "Cedric".equals(secondName);
    	}
    
    	@Parameters({ "count" })
    	@Test
    	public void testSingleInteger(Integer count) {
    		System.err.println("Invoked count " + count);
    		assert count.intValue() == 8;
    	}
    
    	private String m_dataSource;
    	private String m_jdbcDriver;
    	private int poolSize;
    
    	/**
    	 * <p>
    	 * description:注:@Parameters定义的參数顺序必须和方法的參数顺序一致,配置文件里的參数仅仅是和注解的參数名称一致
    	 * </p>
    	 * 
    	 * @param ds
    	 * @param driver
    	 * @param poolSize
    	 */
    	@Parameters({ "datasource", "jdbcDriver", "poolSize" })
    	@BeforeMethod
    	public void beforeTest(String ds, String driver, int poolSize) {
    		this.m_dataSource = ds;
    		this.m_jdbcDriver = driver;
    		this.poolSize = poolSize;
    		System.err.println(getM_dataSource() + " --- " + getM_jdbcDriver()
    				+ " --- " + getPoolSize());
    	}
    
    	public String getM_dataSource() {
    		return m_dataSource;
    	}
    
    	public String getM_jdbcDriver() {
    		return m_jdbcDriver;
    	}
    
    	public int getPoolSize() {
    		return poolSize;
    	}
    
    	/**
    	 * 假设在配置文件里没有指定參数db,那么參数值将使用默认值'mysql'
    	 * 
    	 * @param db
    	 */
    	@Parameters("db")
    	@Test
    	public void testNonExistentParameter(@Optional("mysql") String db) {
    		System.err.println("db ..  " + db);
    	}
    }
    

    配置文件:testng-parameter.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <!-- data-provider-thread-count="20" 共享线程池配置 -->
    <suite name="framework_testng" data-provider-thread-count="20">
    
    	<parameter name="first-name" value="Cedric" />
    	<parameter name="count" value="8" />
    	<parameter name="datasource" value="com.dbcp.source" />
    	<parameter name="jdbcDriver" value="com.mysql.jdbc.driver" />
    	<parameter name="poolSize" value="10" />
    	
    
    	<test verbose="2" name="TestGroups">
    		<classes>
    			<class name="com.dragon.testng.annotation.TestngParameters" />
    		</classes>
    	</test>
    </suite>
    

    原创文章。版权全部,同意转载。标明出处:http://blog.csdn.net/wanghantong

    測试结果:

    com.dbcp.source --- com.mysql.jdbc.driver --- 10
    db ..  mysql
    com.dbcp.source --- com.mysql.jdbc.driver --- 10
    Invoked count 8
    com.dbcp.source --- com.mysql.jdbc.driver --- 10
    Invoked testString Cedric
    PASSED: testNonExistentParameter("mysql")
    PASSED: testSingleInteger(8)
    PASSED: testSingleString("Cedric")
    
    ===============================================
        TestGroups
        Tests run: 3, Failures: 0, Skips: 0
    ===============================================
    


    TestNg依赖具体解释(一)------简单的依赖(单一方法依赖)


    假设我饶恕,

    别觉得我没原则。由于我明确。
    得饶人时且饶人。不能把事做绝了。


  • 相关阅读:
    2021-4-1 日报博客
    2021-3-31 日报博客
    2021-3-30 日报博客
    2021-3-29 日报博客
    2021-3-27 周报博客
    java
    周末总结六
    java
    java
    java
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6781315.html
Copyright © 2011-2022 走看看