test-ng使用篇

作者: 洒脱的风 | 来源:发表于2018-03-15 14:52 被阅读0次

    1.安装testng 并且添加至java build path中

    效果如图: image.png
    2.项目pom文件中添加依赖

    效果如图:


    image.png
    3.使用时,使用时方法添加注解,添加import引用
    image.png
    4.使用testng控制脚本执行顺序的方法
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="suit1">
      <parameter name="urlBaidu"  value="http://www.baidu.com"/>  
        
        <test name="test1" preserve-order="true"><!--表示class中顺序执行 -->
            <classes>
                <class name="com.guoyasoft.testng.xmlConf.TestNgParameters"><!-- 执行class文件 -->
                    <methods>
                        <include name="caseentry" /><!-- 执行class文件方法 -->
                    </methods>
                </class>
            </classes>
        </test>
    </suite>
    

    5.顺序执行多个class脚本

    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="suit1">
      <parameter name="urlBaidu"  value="http://www.baidu.com"/>  
        
        <test name="test1" preserve-order="true">
            <classes>
                <class name="com.guoyasoft.testng.xmlConf.TestNgParameters"><!-- 执行class文件 -->>
                    <methods>
                        <include name="caseentry" /><!-- 指定执行class文件方法 -->
                    </methods>
                </class>
                            <class name="com.guoyasoft.testng.xmlConf.TestNgParameters"><!-- 执行class文件 -->>
                    <methods>
                        <include name="caseentry" /><!-- 指定执行class文件方法 -->
                    </methods>
                </class>
            </classes>
        </test>
    </suite>
    

    @Test(groups = "database")注解在测试方法上标记分组
    xml引用时在test中使用

    <test name="selenium">
    
            <groups>
                <run>
                    <include name="database" /><!-- 指定分组名称-->
                </run>
            </groups>
    
    
        </test>
    

    testng套件运行suite 代表套件运行

    <suite name="suit1">
       <test name="order">
            <classes>
                <class name="类名" />
                <class name="com.yiibai.TestOrder" />
            </classes>
          </test>
    </suite>
    

    testng指定包运行

    <suite name="TestAll">
        <test name="order">
            <packages>
                <package name="报名.*" /> <!-- .*为正则表达式 该包下所有class文件-->
            </packages>
        </test>
    
    </suite>
    
    

    testng指定运行要包括或排除某个分组

    <?xml version="1.0" encoding="UTF-8"?>
    <suite name="TestAll">
    
      <test name="database">
        <groups>
            <run>
                <exclude name="brokenTests" /><!--指定不允许分组名 -->
                <include name="db" /><!-- 指定运行分组名 -->
            </run>
        </groups>
      </test>
    
    </suite>
    

    testng指定运行要包括或排除某个方法类

    <?xml version="1.0" encoding="UTF-8"?>
    <suite name="TestAll">
    
      <test name="order">
        <classes>
            <class name="包名.类名" />
            <class name="包名.类名">
                <methods>
                    <include name="方法名" /><!-- 指定包含方法名运行,支持正则表达式-->
                    <include name="方法名" />
                    <!--
                        <exclude name="方法名" /><!-- 指定不包含方法名运行,支持正则表达式-->
                     -->
                </methods>
            </class>
        </classes>
      </test>
    
    </suite>
    

    testng依赖测试
    在@Test注释中使用属性dependsOnMethods,或者dependsOnGroups
    alwaysRun = true添加则表示顺序依赖及时依赖方法出现问题也正常执行默认为强制依赖依赖方法出现异常则不执行后续方法

    import org.testng.annotations.Test;
    public class Test{

    @Test
    public void method1() {
        System.out.println("This is method 1");
    }
    
    @Test(dependsOnMethods = { "method1" })
    public void method2() {
        System.out.println("This is method 2");
    }
    

    }
    表示方法2 执行依赖方法1则先执行方法1
    如果method1()失败,则将跳过method2()

    testng参数化测试
    @parameters可以传一个文件,也可以传一个参数
    传文件如下链接
    https://www.yiibai.com/testng/parameterized-test.html#article-start

    @DataProvider(name = "参数名")读取声明参数 通过@Test(dataProvider="参数名") 引用
    更可以根据测试方法,根据分组名称名称传递不同参数

    详细方式
    https://www.yiibai.com/testng/parameterized-test.html#article-start

    package com.yiibai;
    
    import org.testng.Assert;
    import org.testng.annotations.DataProvider;
    import org.testng.annotations.Test;
    
    public class TestParameterDataProvider {
    
        @Test(dataProvider = "provideNumbers")
        public void test(int number, int expected) {
            Assert.assertEquals(number + 10, expected);
        }
    
        @DataProvider(name = "provideNumbers")
        public Object[][] provideData() {
    
            return new Object[][] { { 10, 20 }, { 100, 110 }, { 200, 210 } };
        }
    
    }
    

    读取文件的如:

     @DataProvider(name="basicData1")
            public  static Object[][] getCsvData(){
                Object[][] data=CSVReader.readCSV("D:\\softwaredate\\myeclipseworkspace\\Medicine\\src\\resources\\testNG\\SettingDate.csv");
                return data;
            }
            
              
          
          @Test(dataProvider="basicData1")
          public void caseentry(String baseUrl,String topic,String username,String password,String Blindman,String Blindmanname,String bigstorekeeper,String bigstorekeepername,String central,String centralname,String Blindmanemail,String centralemail,String bigstorekeeperemail,String filepath) throws Exception {
    
    
    }
    

    testng+selenium做负载测试
    @Test(invocationCount = 次数) 通过invocationCount指定运行次数

    @Test(threadPoolSize)指定几个线程池执行方法
    具体链接
    https://www.yiibai.com/testng/testng-selenium-load-testing.html

    testng 忽略测试:
    @Test(enabled = false)注解在测试方法上,则会绕过这个未准备好测试的测试用例
    testng 超时测试
    @Test(timeOut = 5000)时间毫秒为单位
    testng 分组测试

    相关文章

      网友评论

        本文标题:test-ng使用篇

        本文链接:https://www.haomeiwen.com/subject/ylacqftx.html