网站建设实训总结封面,绵竹网站建设,旅游 网站建设目标,泉州网站建设有哪些这几年接口自动化变得越来越热门#xff0c;相对比于UI自动化#xff0c;接口自动化有一些优势
1#xff09;运行比UI更稳定#xff0c;让BUG更容易定位 2#xff09;UI自动化维护成本太高#xff0c;接口相对低一些
接口测试其实有很多方式#xff0c;主要有两种相对比于UI自动化接口自动化有一些优势
1运行比UI更稳定让BUG更容易定位 2UI自动化维护成本太高接口相对低一些
接口测试其实有很多方式主要有两种一个是工具最常见的有PostmanSoupUIJmeter另一个就是代码Java和Python都可以实现。
工具的好处就是直观快速上手有些工具也做到了半自动化和集成但是工具还是会有一定的限制代码相对与工具来说是更万能利用接口测试框架结合TestNG或者Junit实现接口自动化。
1、REST Assured测试框架
maven坐标
dependencies!-- https://mvnrepository.com/artifact/io.rest-assured/rest-assured --dependencygroupIdio.rest-assured/groupIdartifactIdrest-assured/artifactIdversion4.0.0/versionscopetest/scope/dependency!-- https://mvnrepository.com/artifact/io.rest-assured/json-path --dependencygroupIdio.rest-assured/groupIdartifactIdjson-path/artifactIdversion4.0.0/version/dependency!-- https://mvnrepository.com/artifact/io.rest-assured/json-schema-validator --dependencygroupIdio.rest-assured/groupIdartifactIdjson-schema-validator/artifactIdversion4.0.0/version/dependency/dependencies
官方文档中建议静态导入
import static io.restassured.RestAssured.*;
import static io.restassured.matcher.RestAssuredMatchers.*;
import static org.hamcrest.Matchers.*;
语法格式
public void testExample()
{given().queryParam(wd,mp3).when().get(http://www.baidu.com/s).then().log().all().statusCode(200);
}
given() 后面跟一次网络请求所需要的条件
.cookies() --cookies 是Map形式存储 .contentType() .queryParam(key,value) 用于get请求参数 .body(Jsondata) 存放Json格式类型 .body(XMLdata) 存放XML格式类型 .formParam(Key,Value) 表单参数类型 .multipartFile(new File(filePath)) .log().all() 打印所有日志 .relaxedHTTPSValidation() --处理无效SSL证书过期 不对的异常
when() 触发条件
.get(url) .post(url) .post(url/{key1}/{key2},value1,value2)
then() 断言
.statusCode(200) .body(key,hasItems())
public Response testDemo(String corpid,String corpsecret ){Response res RestAssured.given().log().all().when().get(https://baidu.com).then().extract().response(); return res;}
extract().response() 以response格式获取响应结果 res.getCookie() res.getHeader() res.getStatusCode() res.path().toString() 获取返回中某个节点的值 res.asString() 获取返回内容体 2、HttpClient
maven坐标
!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --
dependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient/artifactIdversion4.5.5/version
/dependency
dependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpcore/artifactIdversion4.4.4/version
/dependency
导入
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.HttpEntity;
简单实例
public String demoPost(String httpUrl) {String cookie JESSIONIDxxxxxxxx; String params JsonData;StringEntity stringEntity new StringEntity(params, UTF-8); stringEntity.setContentType(application/x-www-form-urlencoded); HttpPost httpPost new HttpPost(httpUrl); httpPost.setHeader(cookie,cookie);httpPost.setEntity(stringEntity); HttpClient client new DefaultHttpClient();HttpResponse Response client.execute(httpPost); String result EntityUtils.toString(Response.getEntity());}
登录需要存储Cookie的方式
CookieStore cookiestorenew BasicCookieStore();
CloseableHttpClient client1HttpClients.custom().setDefaultCookieStore(cookiestore).build();ListCookie cookies cookiesstore.getCookies();
如果登录时页面有重定向操作也可以用cookieStore的方式存储每次重定向时需要用到的cookie
3、对返回的内容Json化
1JSON
maven坐标
dependencygroupIdorg.json/groupIdartifactIdjson/artifactIdversion20180130/version/dependency
数组形式response
JSONArray array new JSONArray(response);
JSONObject object array.getJSONObject(0);
String value object.get(key).toString();
带头信息的response
JSONObject object new JSONObject(response);
String value object.getString(key);
2gson (推荐)
dependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion2.8.2/version //如果使用更新的版本JsonParser会被推荐不使用
/dependencyimport com.google.gson.JsonParser;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
数组形式response
JsonPraser parser new JsonParser();
JsonArray array parser.parse(response).getAsJsonArray;
JsonObject object array.get(0).getAsJsonObject();
String value object.get(key).getAsString();
带头信息的response
JsonPraser parser new JsonParser();
JsonObject object parser.parse(response).getAsJsonOjbect();
JsonObject object_in object.get(key).getAsJsonObject();
String value object_in.get(key).getAsString();
getAsString() 获取字符串的值 toString() 获取字符串
还可以利用Gson提供的fromJson()方法来实现从Json相关对象到Java实体
import com.google.gson.Gson;Gson gson new Gson();
JsonObject object gson.fromJson(response,JsonObject.class);
上述例子将Json字符串转化为了JsonObject实体
也可以将Json字符串转化为自己写的类 总结
如果你对此文有任何疑问如果你也需要接口项目实战如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们加入方式在文章的最后面 自动化测试相关教程推荐 2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂_哔哩哔哩_bilibili 2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华学完年薪40W_哔哩哔哩_bilibili 测试开发相关教程推荐 2023全网最牛字节测试开发大佬现场教学从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili postman/jmeter/fiddler测试工具类教程推荐 讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程学jmeter接口测试一套教程就够了_哔哩哔哩_bilibili 2023自学fiddler抓包请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程_哔哩哔哩_bilibili 2023全网封神B站讲的最详细的Postman接口测试实战教学小白都能学会_哔哩哔哩_bilibili 总结 光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。 如果对你有帮助的话点个赞收个藏给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片博主也希望和志同道合的测试人员一起学习进步
在适当的年龄选择适当的岗位尽量去发挥好自己的优势。
我的自动化测试开发之路一路走来都离不每个阶段的计划因为自己喜欢规划和总结
测试开发视频教程、学习笔记领取传送门