我们在做自动化测试时,是需要对用例进行管理的,比较常用的方案是(以java为例)
员工经过长期磨合与沉淀,具备了协作精神,得以通过团队的力量开发出优质的产品。创新互联坚持“专注、创新、易用”的产品理念,因为“专注所以专业、创新互联网站所以易用所以简单”。公司专注于为企业提供成都网站制作、网站建设、微信公众号开发、电商网站开发,成都小程序开发,软件按需规划网站等一站式互联网企业服务。
如下图所示,TestNGDemo定义为一个产品、包com.my.case1、com.my.case2和com.my.case3代表产品中的3个模块,而MyCase1、MyCase2等6个类代表6个测试场景。
我们可以在类中设计具体的测试点,如下图所示,类MyCase5中的方法f9和f10代表两个测试点(基于Testng)
Testng通过配置文件来对测试用例进行管理,具体规则如下:
Suite里定义了两个test: Simpletest和advancedtest;
在Simpletest中定义了要执行的package:com.my.case1和class: com.my.case2.MyCase4;
在类MyCase4中定义了要执行的方法f7和不执行的方法f8;
在advancedtest中定义了要执行的class:com.my. case3.MyCase5
运行结果如下:
com.my.case1包下的类MyCase1和类MyCase2中的所有方法都运行了,f1、f2、f3和f4;
类MyCase4中只运行了方法f7;
类MyCase5中的所有方法都运行了,f9和f10。
TestNG可以执行复杂的测试方法分组进而把测试用例进行分类。可以通过@Test(groups = { "组1","组2" })进行标识;
分组可以作用在具体的类和方法上,作用在类上表示类里的所有方法都属于该分组;而作用在方法上则表示只有该方法属于该分组。
具体代码如下:
- MyCase1类具备smoketest标签
- @Test(groups = { "smoketest" })
- public class MyCase1 {
- @Test
- public void f1() {
- System.out.println("MyCase1 f1");
- assertEquals("a","b");
- }
- @Test
- public void f2() {
- System.out.println("MyCase1 f2");
- assertEquals("a","a");
- }
- }
- MyCase2类只有f3方法具备smoketest标签
- public class MyCase2 {
- @Test(groups = { "smoketest" })
- public void f3() {
- System.out.println("MyCase2 f3");
- assertEquals("a","b");
- }
- @Test
- public void f4() {
- System.out.println("MyCase2 f4");
- assertEquals("a","a");
- }
- }
- MyCase3类具备performancetest标签
- @Test(groups = { "performancetest" })
- public class MyCase3 {
- @Test
- public void f5() {
- System.out.println("MyCase3 f5");
- assertEquals("a","b");
- }
- @Test
- public void f6() {
- System.out.println("MyCase3 f6");
- assertEquals("a","a");
- }
- }
- MyCase4类只有f8方法具备performancetest标签
- public class MyCase4 {
- @Test
- public void f7() {
- System.out.println("MyCase4 f7");
- assertEquals("a","b");
- }
- @Test(groups = { "performancetest" })
- public void f8() {
- System.out.println("MyCase4 f8");
- assertEquals("a","a");
- }
- }
- MyCase5类具备securitytest 和performancetest标签
- public class MyCase5 {
- @Test(groups = { "securitytest","performancetest" })
- public void f9() {
- System.out.println("MyCase5 f9");
- assertEquals("a","b");
- }
- @Test
- public void f10() {
- System.out.println("MyCase5 f10");
- assertEquals("a","a");
- }
- }
- MyCase6类具备securitytest标签
- @Test(groups = { "securitytest" })
- public class MyCase6 {
- @Test
- public void f11() {
- System.out.println("MyCase6 f11");
- assertEquals("a","b");
- }
- @Test
- public void f12() {
- System.out.println("MyCase6 f12");
- assertEquals("a","a");
- }
- }
设置配置文件,如下所示:
其中define标签部分定义了需要的组分类,该部分可以省略,但个人建议保留,使用define可以清晰的看到现有的group结构;
run标签带表了需要运行的group信息,我们可以通过include和exclude对需要执行的分组和不需要执行的分组进行设置,方法非常简单,如下所示:
上图中通过include来设置运行securitytest组标识的用例。
运行结果如下:可以看到securitytest标签下的用例都运行了
@BeforeGroups注解的方法将在本组内任何测试方法执行前被执行一次,可用于执行初始化操作。类似的@AfterGroups 注解的方法将在本组内任何测试方法执行后被执行,可用于关闭资源。@Test(groups = { "smoketest" })
- public class MyCase1 {
- @BeforeGroups(groups = { "smoketest" })
- public void setup() {
- System.out.println("smoketest setup");
- }
- @AfterGroups(groups = { "smoketest" })
- public void teardown() {
- System.out.println("smoketest teardown");
- }
- @Test
- public void f1() {
- System.out.println("MyCase1 f1");
- assertEquals("a","b");
- }
- @Test
- public void f2() {
- System.out.println("MyCase1 f2");
- assertEquals("a","a");
- }
- }
代码执行如下:可以看到@BeforeGroups和@AfterGroups在组smoketest
的运行前后分别执行。
本文题目:干货!详解自动化测试用例设计与管理的通用策略(基于TestNg)
URL网址:http://www.mswzjz.cn/qtweb/news30/35880.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能