济南网站建设排名,小视频网站开发流程图,最简单网站设计的代码,建设公司网站大概需要多少钱?近几年接口自动化变得越来越热门#xff0c;相对比于UI自动化#xff0c;接口自动化有一些优势
1.运行比UI更稳定#xff0c;让BUG更容易定位
2.UI自动化维护成本太高#xff0c;接口相对低一些
接口测试其实有很多方式#xff0c;主要有两种#xff0c;一个是工具相对比于UI自动化接口自动化有一些优势
1.运行比UI更稳定让BUG更容易定位
2.UI自动化维护成本太高接口相对低一些
接口测试其实有很多方式主要有两种一个是工具最常见的有PostmanSoupUIJmeter另一个就是代码Java和Python都可以实现。
工具的好处就是直观快速上手有些工具也做到了半自动化和集成但是工具还是会有一定的限制代码相对与工具来说是更万能利用接口测试框架结合TestNG或者Junit实现接口自动化。这是一篇有关于用Java代码实现接口自动化的两个常用框架以及接口返回值处理方式的介绍。 一.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证书过期 不对的异常
参考文档https://blog.csdn.net/u011541946/article/details/98892042 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() 获取返回内容体 二.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 三. 对返回的内容Json化
1.JSON
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); 2.gson (推荐) dependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion2.8.2/version //如果使用更新的版本JsonParser会被推荐不使用
/dependency
import 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()获取字符串
参考
https://blog.csdn.net/niuba123456/article/details/100581376
https://blog.csdn.net/u014253011/article/details/101718137 还可以利用Gson提供的fromJson()方法来实现从Json相关对象到Java实体
import com.google.gson.Gson;
Gson gson new Gson();
JsonObject object gson.fromJson(response,JsonObject.class);
上述例子将Json字符串转化为了JsonObject实体
也可以将Json字符串转化为自己写的类