java接⼝测试框架搭建_接⼝⾃动化测试框架搭建⼀、原理及特点
参数放在XML⽂件中进⾏管理
⽤httpClient简单封装⼀个httpUtils⼯具类
测试⽤例管理使⽤了testNg管理,使⽤了TestNG参数化测试,通过xml⽂件来执⾏case。
测试报告这⾥⽤到第三⽅的包ReportNG 项⽬组织⽤Maven
⼆、准备
使⽤⼯具:eclipse,maven
⽤到的第三⽅jar包:dom4j、reportng、testng
理解难点:httpUtils和xmlUtil⼯具类的封装;dom4j使⽤;CookieStore的应⽤
三、框架构思
1、项⽬结构
2、⽤例执⾏流程
3、接⼝调⽤流程
4、调度脚本流程
四、框架实现
1、输⼊参数
1.1 参数放在XML⽂件中进⾏管理
例:这⾥测试获取⾓⾊的接⼝输⼊参数为,page和rows,l内容如下
1.2 封装⼀个xmlUtil⼯具类负责读取XML,使⽤第三⽅的jar包dom4j
1.2.1 xmlUtil中readXMLDocument⽅法返回值为HashMapdom4j读取xml
public static HashMap readXMLDocument(String beanName,String xmlName){ }
参数xmlName(xml⽂件的名字); 参数beanName(xml⽂件中节点的名称);
1.3 封装⼀个CookieUtil⼯具类,通过CookieStore储存cookie
1.3.1 CookieUtil类中setCookieStore⽅法返回值为CookieStore
public CookieStore setCookieStore(HttpResponse httpResponse) {
}
1.4 ⽤httpClient简单封装⼀个httpUtils⼯具类有get.post,put,delete⽅法
1.4.1 httpUtils中post封装⽅法如下:
public CloseableHttpResponse post(String url, Map params,CloseableHttpClient httpclient,CookieStore cookieStore){ }
2、返回参数
2.1 创建⼀个接⼝返回对象ResponseBean,
对象ResponseBean,包括status、statusCode、contentType、body、url、method、cookies
2.2 在⼯具类中在创建⼀个ReponseUtil⼯具类
ReponseUtil⼯具类负责将请求的返回数据CloseableHttpResponse 转换成ResponseBean
public ResponseBean setResponseBean(CloseableHttpResponse httpResponse) {
}
3、测试⽤例
测试⽤例管理使⽤了testNg管理 ,使⽤了TestNG参数化测试,通过xml⽂件来执⾏case
3.1 测试case脚本
public class GetRoleTest {
static CookieStore cookieStore ;
static CookieUtil cookieUtil=new CookieUtil() ;
CloseableHttpClient client;
HttpUtils Instance();
@Parameters({ "url", "objBean" ,"statusCode","xmlName"})
@BeforeSuite
/*
* 登录进⼊系统获取JSESSIONID放⼊到CookieStore中
* */
public void TestLoginIn(String url ,String objBean, String statusCode,String xmlName) {
Map adXMLDocument(objBean,xmlName);
client = ateDefault();
CloseableHttpResponse httpResponse= httpUtils.post(url, params, client, cookieStore);
//cookieUtil.printResponse(httpResponse);
cookieStore=cookieUtil.setCookieStore(httpResponse);
}
@Parameters({ "url", "objBean" ,"statusCode","body","xmlName"})
@Test(priority = 2)
public void TestGetRole(String url ,String objBean, String statusCode,String body,String xmlName) { Map adXMLDocument(objBean,xmlName);
client = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
CloseableHttpResponse httpResponse= httpUtils.post(url, params, client, cookieStore); ResponseBean rb=new ReponseUtil().setResponseBean(httpResponse);
// add Assert
Assert.assertEquals("OK", rb.getStatus());
Assert.assertEquals(statusCode, rb.getStatusCode());
Assert.assertEquals(true, rb.getBody().contains(body));
}
@AfterSuite
public void closeClient(){
try {
// 关闭流并释放资源
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
[注] 因为API接⼝测试时每次都要校验Cookie,所有我们每次都先执⾏登录操作去获取Cookie
3.2 xml⽂件的编写
右键->run as ->TestNG Suite,这个场景的的测试⽤例就可以运⾏了
4、测试报告和项⽬组织
测试报告这⾥⽤到第三⽅的包ReportNG 项⽬组织⽤Maven
4.0.0
.......................................... .......................................... ..........................................
UTF-8
.................这⾥写testNG对应的XML名称----------------------
..........................
org.apache.maven.plugins
maven-surefire-plugin
2.19
src/test/java/testSuites/${xmlFileName}
.................略............
..............这⾥的和properties中的xmlFileName想对应............
src/test/java/testSuites/${xmlFileName10}
org.apache.maven.plugins
maven-surefire-plugin
2.5
usedefaultlisteners
false
listener
portng.HTMLReporter
target/
maven-compiler-plugin
3.5.1
1.8
1.8
[注] 因为是maven的项⽬所以要将testSuite的xml⽂件放在maven的test⽬录下,这样右键l⽂件maven test,所有的测试⽤例就开始执⾏了
测试报告
框架⽬前存在的不⾜
1、数据库数据校验这⼀块的功能还没有完善,计划⽤MyBatis
2、参数使⽤了xml⽂件配置虽然灵活但有些繁琐,⽬前还没想到好的解决⽅案,testlink是否可以尝试⼀下呢
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论