• TestNG--@Factory


    原文地址:http://blog.csdn.net/wanghantong

    TestNg的@Factory注解从字面意思上来讲就是采用工厂的方法来创建测试数据并配合完成测试

    其主要应对的场景是:对于某一个测试用例或方法,我们需要输入多个测试数据进行测试,并且这些测试数据可以是有一定关系(可以通过代码控制),

    ps. 其实就是用一个类封装这些测试数据。在默认情况下,testNG调用测试类的无参数构造方法,将测试类实例化,然后执行在每个测试类中的测试方法,如果测试类没有无参数的构造方法,就会报错。使用@Factory可以实现调用有参数的构造函数来创建实例对象。

    此时,我们就可以把自动化或者手动测试时的遇到的只因测试数据不同的多个测试用例合并成一个测试用例,来进行更方便和快捷的测试,

    对编写自动化测试代码人员节省了很多时间

    策略:一般我们会在标有@Factory注解的方法中对测试类进行调用,这时TestNg会自动调用测试类中带有@Test注解的方法

    java code:

    /**
     * 
     * <p>
     * Title: TestngFactory
     * </p>
     * 
     * <p>
     * Description: 配置文件:testng-factory.xml
     * 
     * TestngFactory工厂类,在带有@Factory注解的方法中调用被执行的测试类,TestNg会自动调用被执行类中带有@Test注解的方法,
     * 被执行的测试类为:TestngFactoryTest,
     * </p>
     * 
     * <p>
     * Company:
     * </p>
     * 
     * @author : Dragon
     * 
     * @date : 2014年10月22日
     */
    public class TestngFactory {
        @Factory
        public Object[] createInstances() {
            Object[] result = new Object[10];
            for (int i = 0; i < 10; i++) {
                result[i] = new TestngFactoryTest(i * 10);
            }
            return result;
        }
    }
    public class TestngFactoryTest {
        private int m_numberOfTimes;
    
        public TestngFactoryTest(int numberOfTimes) {
            this.m_numberOfTimes = numberOfTimes;
        }
    
        private static int num;
    
        @Test
        public void testServer() {
            num++;
            System.out.println("num    " + num + "  m_numberOfTimes :"
                    + m_numberOfTimes);
        }
    }

    配置文件:只需要配置带有@Factory注解的类即可

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <!-- allow-return-values 默认值为FALSE,表示返回值将被忽略 -->
    <suite name="framework_testng" allow-return-values="true">
        <test verbose="2" name="TestMethods">
            <classes>
                <class name="com.dragon.testng.annotation.TestngFactory">
                </class>
            </classes>
        </test>
    </suite>

     

    测试结果:

    num    1  m_numberOfTimes :30
    num    2  m_numberOfTimes :20
    num    3  m_numberOfTimes :70
    num    4  m_numberOfTimes :60
    num    5  m_numberOfTimes :90
    num    6  m_numberOfTimes :50
    num    7  m_numberOfTimes :10
    num    8  m_numberOfTimes :0
    num    9  m_numberOfTimes :40
    num    10  m_numberOfTimes :80
    PASSED: testServer
    PASSED: testServer
    PASSED: testServer
    PASSED: testServer
    PASSED: testServer
    PASSED: testServer
    PASSED: testServer
    PASSED: testServer
    PASSED: testServer
    PASSED: testServer
    
    ===============================================
        TestMethods
        Tests run: 10, Failures: 0, Skips: 0
    ===============================================
     
  • 相关阅读:
    CareerCup Questions List 职业杯题目列表
    [CareerCup] Guards in a museum 博物馆的警卫
    [LeetCode] 7. Reverse Integer 翻转整数
    Python笔记11------一个K-means聚类的小例子
    python笔记10-----便捷网络数据NLTK语料库
    Python笔记9-----不等长列表转化成DataFrame
    Python笔记8----DataFrame(二维)
    Python笔记7----Pandas中变长字典Series
    Python笔记6----数组
    Python笔记5----集合set
  • 原文地址:https://www.cnblogs.com/byron0918/p/4739610.html
Copyright © 2020-2023  润新知