首页天道酬勤api自动化测试框架,jmeter接口自动化测试面试题

api自动化测试框架,jmeter接口自动化测试面试题

张世龙 05-12 15:23 66次浏览

在前面的自动化测试中,我们大致了解了测试的目标、测试的技术选定、平台构建的目标和需求,并确认了自动化测试计划将testNg作为整个测试过程的基础支持框架。 testNg有什么特点呢? 从本篇开始详细学习testNg这个测试框架吧。

为什么要用testNg?

首先,在我们学习之前,让我们来思考一下java测试框架很多,为什么要使用testNg的问题。 例如,junit很多人都在使用,大多数java开发人员都将junit用作测试框架。 让我们从三个方面来看testNg比junit不同的地方。

1 .用灵活的方法命名

我想大家都知道使用过junit,ngdlh测试方法的传统方法是在方法名称后加上test前缀。 但是,从灵活性的角度来看,限制测试方法的名称确实不太合适。 另一方面,TestNg不限制测试方法名称,而是在注释中完全搜索测试方法

2 .方法支持灵活的动态参数传递

熟悉junit的人一定知道junit方法默认不支持参数传递。 我们经常选择其他所谓的设计模式技术来将参数传递给方法。 例如,为了避免自变量的构筑问题,有重构等方法。 可以说,该方法几乎断绝了使用junit交换方法、连续调用方法等集成测试的想法。 另一方面,testNg不仅支持方法的参数传递,还支持动态构建数据的方式,如下面介绍的DataProvider,并且还支持方法依赖、组依赖等策略,具有不同的方法依赖

3 .测试支持多模式多扩展

junit当然只提供简单的测试方法,本身提供的可扩展性低,在面对复杂的测试和定制的测试需求时根本无从谈起。 另一方面,testNg支持xml和注释两种配置方法,可以混合使用这两种配置方法,并在执行周期中提供多个注释和块、选择器等扩展机制,提供灵活的扩展和排除方法选择

第一个测试测试方法

介绍了很多testNg的优点,开始制定第一个简单的测试方法吧。 打开之前制作的测试工序,首先进行部分修正。 在此选择释放测试范围,并将测试方法用作src/main目录下的常规开发代码。 在此,为了将testNg自动化测试作为某个工程项目进行开发迭代,必须使用pom文件中的336666

org.springframework.boot

spring-boot-starter-test

测试

注释掉复制范围标签,以便可以在整个项目中覆盖test模块。 接下来,创建一个conf包来存储测试过程中遇到的所有测试基础配置。 然后,在conf包下创建基类--BaseTestNg,并继承abstracttestngspringcontexttests类。 此类可用于检索正在测试的操作,如运行时、运行时参数和上下文。 这些方法对于扩展测试和负载测试非常重要,现在光继承就有:了

//*

*基础测试的父类-用于获取上下文、运行时参数、注入等

*/

publicclassbasetestngextendsabstracttestngspringcontexttests {

}

接下来,创建test包。 让我们在此包下创建一个demo01类,然后创建一个简单的测试方法。

公共类demo 01扩展sbasetestng {

@Test

公共语音t demo (

System.out.println ('当前正在运行的是第一种测试方法');

}

}

请注意,@Test注释使用的是用org.testng.annotations.Test包裹的内容。 此外,在这里您还可以看到方法的名称不是以test开头的。 让我们执行此方法:

执行成功了! 诶,这个tDemo上面的demo01、test以及Default Suite分别是什么? 为什么会有这些东西呢? 请注意。 这里需要testNg的执行机制。 testNg将运行套件测试套件。 每个套件都有多个test测试模块,每个test下都有多个策略(如class和方法),但我们只运行一种方法: tDemo,因此testNg在启动时在名为demo01的测试类中包含当前的内存在所有测试模块中,缺省值都装载在相应的套件中。 其中默认值为默认套件

测试执行周期

我刚刚执行了一个简单的测试方法,如何用灵活的方法控制呢? 例如,必须在测试之前准备资源,并在测试完成后执行销毁资源以释放内存的操作。 我该怎么办? 相反,testNg提供了一系列可依赖的运行时方法,可以在不同的运行时生命周期中运行。 当前支持的注释方法为以下:

@BeforeSuite

@BeforeSuite注解方法在套件运行之前执行

@BeforeTest

@BeforeTest注解方法在测试用例之前执行

@BeforeClass

@BeforeClass注解方法在测试类运行之前执行

@BeforeMethod

@BeforeMethod注解方法在测试方法运行之前执行

@AfterSuite

@AfterSuite注解方法在测试套件运行结束以后执行

@AfterTest

@AfterTest注解方法在测试用例结束以后执行

@AfterClass

@AfterClass注解方法在测试类运行结束以后执行

@AfterMethod

@AfterMethod注解方法在测试方法运行结束以后执行

那么,这些注解方法执行顺序是什么呢?与测试用例、测试方法的关系是什么呢?我们来写一个demo测试一下:

/**

*测试运行周期

*/

public class demoTest extends BaseTestNg {

//在套件运行之前执行

@BeforeSuite

public void BeforeSuite(){

System.out.println("BeforeSuite");

}

//在测试用例之前执行

@BeforeTest

public void BeforeTest(){

System.out.println("BeforeTest");

}

//在测试类运行之前执行

@BeforeClass

public void BeforeClass(){

System.out.println("BeforeClass");

}

//在测试方法运行之前执行

@BeforeMethod

public void BeforeMethod(){

System.out.println("BeforeMethod");

}

//在测试套件运行结束以后执行

@AfterSuite

public void AfterSuite(){

System.out.println("AfterSuite");

}

//在测试用例结束以后执行

@AfterTest

public void AfterTest(){

System.out.println("AfterTest");

}

//在测试类运行结束以后执行

@AfterClass

public void AfterClass(){

System.out.println("AfterClass");

}

//在测试方法运行结束以后执行

@AfterMethod

public void AfterMethod(){

System.out.println("AfterMethod");

}

@Test

public void test(){

System.out.println("test");

}

}

编写以后,我们来运行这个测试方法,可以看到输出结果:

BeforeSuite

BeforeClass

BeforeMethod

test

AfterMethod

AfterClass

AfterTest

AfterSuite

可以看出来运行时周期执行顺序为:

BeforeSuite-->BeforeTest-->BeforeClass-->BeforeMethod-->测试方法-->AfterMethod-->AfterClass-- >AfterTest-->AfterSuite

api自动化测试框架,怎么用postman做接口测试 web自动化测试面试题,jmeter接口自动化测试面试题