寫在閱讀前
筆記的用途,能讓你很快回憶起學(xué)習(xí)時(shí)候的點(diǎn)滴爱榔。
初學(xué)者更應(yīng)該記下更多的記筆記被环,也許有高手點(diǎn)開你的筆記,
會(huì)說(shuō)垃圾文章详幽,抄襲狗筛欢,但是對(duì)于初學(xué)者,你的筆記唇聘,
也許剛好就有其他新人也遇到的坑版姑,你剛好可以解決和你水平差不多人的問(wèn)題。
一切的工具迟郎,都是從實(shí)際應(yīng)用出發(fā)剥险!~
但是我們可以構(gòu)建好自己想要的框架,也許有一天遇到更好的宪肖,會(huì)有更深刻的記憶
設(shè)計(jì)的接口框架是這樣的:
可以有界面錄入表制,可以維護(hù)健爬,修改,展示夫凸,執(zhí)行測(cè)試用例浑劳。
此類框架,場(chǎng)景化接口夭拌,接口加密魔熏,需要額外界面支持,數(shù)據(jù)需要入庫(kù)鸽扁,整體技術(shù)要求更高蒜绽,需要多個(gè)人維護(hù)框架。并且框架本身可能也有bug桶现。前期準(zhǔn)備時(shí)間較長(zhǎng)
2:常用型框架
測(cè)試人員維護(hù)xml文件躲雅,xml文件主要是接口入?yún)ⅲY(jié)果校驗(yàn)信息等骡和。
此類框架相赁,編寫也比較簡(jiǎn)單,就是會(huì)有大量的xml文件慰于,需要做好管理钮科,優(yōu)勢(shì)在于,對(duì)于多樣的接口婆赠,有更自由的支持绵脯,對(duì)于校驗(yàn),多樣化
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="suite" verbose="1" >
<test name = "login">
<classes>
<class name="testcase.LoginCase"></class>
<parameter name="logincase" value='{"urlPath":"api/autoLogin","queryParameters":{"mobile":"15821387135"},"method":"GET"}'/>
</classes>
</test>
</suite>
3:本次來(lái)分享一個(gè)基于自然語(yǔ)言格式的測(cè)試框架RestAssured
需要用到的依賴jar
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>3.0.5</version>
</dependency>
//code部分
@Test
public void testDemo() {
Response response = given
.contentType("application/x-www-form-urlencoded")
.params("mobile", "15821387135", "clientNo", 222222)
.expect()
// 判斷 status 是不是SUCCESS
.body("status", equalTo("SUCCESS"))
.when()
.get("http://events.pingan.com/api/autoLogin");
// 打印出 response 的body
response.print();
}
設(shè)置header休里,cookie
header和cookie的設(shè)置類似param蛆挫,存在header()、headers()妙黍、
cookie()悴侵、cookies()方法,使用也跟param類似:
Response response = given()
.cookie("cookie","value")
.cookies("cookiename1", "value1", "cookiename2", "value2")
.header("Accept-Encoding:", "gzip, deflate")
.headers("header1","value1","header2","value2")
.get("url");
解析JSON
Rest Assured 自帶支持對(duì)JSON废境、xml的解析
// @Test()
public void getHttpTest() {
Response response = given().get("http://events.pingan.com/api/autoLogin");
// 打印出 response 的body
response.print();
int statusCode = response.getStatusCode();
System.out.println(statusCode);
//同一個(gè)字段畜挨,可以多種格式來(lái)接受statusCode
String statusCode2 = response.jsonPath().getInt("statusCode");
System.out.println(statusCode2);
String status = response.jsonPath().getString("statusCode");
System.out.println(status);
代理(proxy)配置
given().proxy("localhost", 8888)
JSON Schema Validation
可以自行百度JSON Schema Validation格式
json契約精神,非常強(qiáng)大的規(guī)范校驗(yàn)工具噩凹,估計(jì)很多人已經(jīng)遺忘
JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.newBuilder().setValidationConfiguration(ValidationConfiguration.newBuilder().setDefaultVersion(DRAFTV4).freeze()).freeze();
// When
get("/products").then().assertThat().body(matchesJsonSchemaInClasspath("products-schema.json").using(jsonSchemaFactory));