网站优化大计,孝感注册公司,电子商务网站建设视频教程,湖南郴州市汝城县#x1f345; 视频学习#xff1a;文末有免费的配套视频可观看 #x1f345; 关注公众号#xff1a;互联网杂货铺#xff0c;回复1 #xff0c;免费获取软件测试全套资料#xff0c;资料在手#xff0c;涨薪更快 一、原理及特点
参数放在XML文件中进行管理用httpClien… 视频学习文末有免费的配套视频可观看 关注公众号互联网杂货铺回复1 免费获取软件测试全套资料资料在手涨薪更快 一、原理及特点
参数放在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和rowsmapRole.xml内容如下
?xml version1.0 encodingUTF-8?
mapbean beanNameGetRole!--Locator lists --locator namepage value1/locatorlocator namerows value10/locator/bean
/map
1.2 封装一个xmlUtil工具类负责读取XML,使用第三方的jar包dom4j
1.2.1 xmlUtil中readXMLDocument方法返回值为HashMapString, String
public static HashMapString, String 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, MapString, String 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 cookieUtilnew CookieUtil() ;CloseableHttpClient client;HttpUtils httpUtilsHttpUtils.getInstance();Parameters({ url, objBean ,statusCode,xmlName})BeforeSuite/** 登录进入系统获取JSESSIONID放入到CookieStore中* */public void TestLoginIn(String url ,String objBean, String statusCode,String xmlName) {MapString,String paramsxmlUtil.readXMLDocument(objBean,xmlName);client HttpClients.createDefault();CloseableHttpResponse httpResponse httpUtils.post(url, params, client, cookieStore);//cookieUtil.printResponse(httpResponse);cookieStorecookieUtil.setCookieStore(httpResponse);}Parameters({ url, objBean ,statusCode,body,xmlName})Test(priority 2)public void TestGetRole(String url ,String objBean, String statusCode,String body,String xmlName) {MapString,String paramsxmlUtil.readXMLDocument(objBean,xmlName);client HttpClients.custom().setDefaultCookieStore(cookieStore).build();CloseableHttpResponse httpResponse httpUtils.post(url, params, client, cookieStore);ResponseBean rbnew ReponseUtil().setResponseBean(httpResponse);
// add AssertAssert.assertEquals(OK, rb.getStatus());Assert.assertEquals(statusCode, rb.getStatusCode());Assert.assertEquals(true, rb.getBody().contains(body));}AfterSuitepublic void closeClient(){try {// 关闭流并释放资源client.close();} catch (IOException e) {e.printStackTrace();}}
}
[注] 因为API接口测试时每次都要校验Cookie所有我们每次都先执行登录操作去获取Cookie
3.2 xml文件的编写
?xml version1.0 encodingUTF-8?
!DOCTYPE suite SYSTEM http://testng.org/testng-1.0.dtd
suite nameTestGetRole parallelclasses thread-count5parameter nameurl value/sys/login /parameter nameobjBean valueloginIn /parameter namestatus valueOK /parameter namestatusCode value200 /parameter namexmlName valuemapRole /test nameTestGetRole preserve-ordertrueparameter nameurl value/json/getRoleInfo /parameter nameobjBean valueGetRole /parameter namestatus valueOK /parameter namestatusCode value200 /parameter namebody valueroleName /classesclass namecom.lc.testScript.GetRoleTestmethodsinclude nameTestGetRole /!--include nameTestGetRole2 /--/methods/class/classes/test
/suite
右键-run as -TestNG Suite,这个场景的的测试用例就可以运行了
4、测试报告和项目组织
测试报告这里用到第三方的包ReportNG 项目组织用Maven
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion
..........................................
..........................................
..........................................propertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingxmlFileName1TestGetRole.xml/xmlFileName
.................这里写testNG对应的XML名称----------------------xmlFileName10TestGetUser.xml/xmlFileName/propertiesdependencies........................../dependencies buildplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactIdversion2.19/versionconfigurationsuiteXmlFilessuiteXmlFilesrc/test/java/testSuites/${xmlFileName}/suiteXmlFile.................略..........................这里的和properties中的xmlFileName想对应............suiteXmlFilesrc/test/java/testSuites/${xmlFileName10}/suiteXmlFile/suiteXmlFiles/configuration/plugin!-- 添加插件,添加ReportNg的监听器修改最后的TestNg的报告 --plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactIdversion2.5/versionconfigurationpropertiespropertynameusedefaultlisteners/namevaluefalse/value/propertypropertynamelistener/namevalueorg.uncommons.reportng.HTMLReporter/value/property/propertiesworkingDirectorytarget//workingDirectory/configuration/pluginpluginartifactIdmaven-compiler-plugin/artifactIdversion3.5.1/versionconfigurationsource1.8/sourcetarget1.8/target/configuration/plugin/plugins/build/project
[注] 因为是maven的项目所以要将testSuite的xml文件放在maven的test目录下这样右键pom.xml文件maven test,所有的测试用例就开始执行了
测试报告 框架目前存在的不足
1、数据库数据校验这一块的功能还没有完善计划用MyBatis2、参数使用了xml文件配置虽然灵活但有些繁琐目前还没想到好的解决方案testlink是否可以尝试一下呢
在这我为大家准备了一份软件测试视频教程含面试、接口、自动化、性能测试等就在下方需要的可以直接去观看。 字节大佬一周讲完自动化测试项目实战这套教程是怎么称霸B站的【2024最新版】