java移動端接口測試_使用java如何進行接口測試

關于接口測試, 我們之前介紹過很多方法了, 有postman, soapUI, Jmeter等, 他們各有優勢和劣勢,?今天和大家分享的是如何用java TestNG來實現接口測試.

開始測試之前需要如下準備工作:

1. IDE環境, Intellij 或者eclipse,?個人推薦使用Intellij.

2. JKD1.8 以上

3. Maven 環境?Maven環境配置

4. 被測接口(京東web版登錄API)

首先來看下jd 登錄接口,chrome瀏覽器打開www.jd.com, 使用chrome開發者工具, Windows用戶按鍵盤F12,?將tab切換到Network,?使用密碼登錄方式,?登錄成功后, 我們就可以獲取到登錄接口了,如果無法獲取,使用charles第三方工具也是妥妥的.

看下我登錄后開發者工具:

接著在ide中創建項目, 我們選擇maven來創建項目

是不是非常的簡單, 一步步都是next下去即可,?Intellij就會幫你把maven項目創建好.?

如果你的IDE里沒有maven,也不用著急, 在菜單的Preference->plugs里可以添加所需插件

在創建好的項目中, 我們首先進入pom.xml文件, 這是maven的配置文件

4.0.0

com.api.test

test

1.0-SNAPSHOT

這邊需要添加相應的項目管理依賴包, 如testng等, 適個人情況添加所需的依賴包.

UTF-8

execShell

org.testng

testng

7.0.0

org.apache.poi

poi

3.10-FINAL

org.jsoup

jsoup

1.9.1

org.apache.httpcomponents

httpclient

4.5.2

org.apache.httpcomponents

httpmime

4.5.2

com.jcraft

jsch

0.1.54

mysql

mysql-connector-java

5.1.38

commons-beanutils

commons-beanutils

1.6

commons-collections

commons-collections

3.1

commons-logging

commons-logging

1.1

net.sf.ezmorph

ezmorph

1.0.6

net.sf.json-lib

json-lib

2.4

如果需要maven來幫你build項目也是可以的, 方法也是非常簡單

org.apache.maven.plugins

maven-compiler-plugin

8

8

org.apache.maven.plugins

maven-surefire-plugin

2.19.1

1

1

true

once

-Dfile.encoding=UTF-8

${groupsTest}

**/*Test.java

測試思路:

以下示例中參數都來自于chrome開發者工具中捕獲的信息,?因為被測接口是post方法,且在接口中聲明了提交方式:

Content-Type:application/x-www-form-urlencoded; charset=UTF-8

所以在接口測試過程中, form data里的信息都要作為參數添加.

完成以上內容就可以開始創建一個測試的java類, 在你的項目的/test/java下面創建?NewApiTest.java

importorg.apache.http.HttpEntity;importorg.apache.http.NameValuePair;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.util.EntityUtils;importorg.testng.annotations.Test;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;/** @auth:louiezhou

* @return: 測試數據

* @parame:

**/

public classNewApiTest {

CloseableHttpResponse response=null;

String entityStr= null;//登錄url

String url ="https://passport.jd.com/uc/loginService?uuid=a25f6873-4dd9-4334-ad4c-b8e3f&ReturnUrl=https%3A%2F%2Fwww.jd.com%2F&r=0.8097302259069017&version=2015";

@Test(invocationCount= 1, threadPoolSize = 0)public void JdLoginTest() throwsIOException {//獲取連接客戶端工具

CloseableHttpClient httpClient=HttpClients.createDefault();//創建POST請求對象

HttpPost httpPost=newHttpPost(url);//httpPost.addHeader post請求 header

httpPost.addHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");

httpPost.addHeader("User-Agent:","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36");//List headerList= Lists.newArrayList();//headerList.add(new BasicHeader(HttpHeaders.CONTENT_TYPE,"application/x-www-form-urlencoded; charset=UTF-8"));//headerList.add(new BasicHeader(HttpHeaders.USER_AGENT,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36"));//參數封裝對象

List params=new ArrayList();try{

params.add(new BasicNameValuePair("uuid","a25f6873-4dd9-4334-ad4c-e6f8992b8e3f"));

params.add(new BasicNameValuePair("eid","BHM2GM3F6FVMTA3YNGT4JRDJBHAWFK7MSHDPF3SU4FHFSOLMBUP77TDQE5EB43BZPDT5J6PAQ6CFI"));

params.add(new BasicNameValuePair("fp","f0aef80fec848c0a78c823bd234"));

params.add(new BasicNameValuePair("loginType","c"));

params.add(new BasicNameValuePair("loginname","zhangsan"));

params.add(new BasicNameValuePair("nloginpwd","Y2nHBYQrhMS1/YvBs+cW8rrvbW1CYlmX61xfoLx7tgSpbgxZ8+/HCgefeAXphJVmefDdN/3d3UQLnFiyl7GSkGjZQNU4pw+9+202NovcR6q9G/haGpNKp/5h+Xs+J7BrUfKXvkmdmKS0fIs7ly0K+OY/BHKcYg="));

params.add(new BasicNameValuePair("authcode","107fdb562e32406cab356c3ff97"));

params.add(new BasicNameValuePair("pubKey","MIGfMA0GCSqGSIb3DQEgQDC7kw8r6tq43pwApYvkJ5laljaN9BZb21TAIfT/vexbobzH7Q8SUdP5uDPXEBKzOjx2L28y7Xs1d9v3tdPfKI2LR7PAzWBmDMn8riHrDDNpUpJnlAGUqJG9ooPn8j7YNpcxCa1iybOlc2kEhmJn5uwoanQq+CA6agNkqly2H4j6wIDAQAB"));

params.add(new BasicNameValuePair("sa_token", "B68C442BEF615E156C81EFA53D580517BB9357FB9516A01E25761124AE9AF7B3CFA3C38D38484A734CB58C286401C2DEC2A5DFF3C9E856280AF80D4851C9B0239587771E8DC06B46454644D4908F4DC165CB70D86EAC7276BFBE489FFE2324EDDC5F71043BFB99B3D6E238B1AE9E67C3F297E0993B8497B1287640777CF4FFBA52FF032510AD19D7F371541C798742CB4378E5DD2119BADE9078310468AF8436A2B88593A92EEAF16FCFD55CD7F121B58D7A9A833D74068FACC5A6D6D8C3D1A850245F0742DEEC12BACF0FF9D5853FFDF1B37AC6A5E676DC635896AFD884D0BBB8A490E57234DF65A76AF189908F4AB80AEA36E56F6DD110EF7D36D119BB77F0B65774780348FFE859A68D2E0B3A3CDDAFD1BEFCD401530D536C8EF68B618969FC2FFD658FE0BA7BC2E7250F9CCDBB8F9AF360FC293F294A7279EA70043E860784C2E2CF11181C44561794A32AADDB2AC37B1294C08E7B63C85E6561F138195ECCF28EA0F08FB5A16DB7A20814DD914FC0C8A12BF29FFC4F73DD39361EBA1A849BB25B9F5957589347E205573754EA468D809CCCA698BFAB16373516DC8F5FEE8A24C2306850D601D6827C161F1A83057E0F93A97A0C034E"));

params.add(new BasicNameValuePair("seqSid","31251240"));

params.add(new BasicNameValuePair("useSlideAuthCode","1"));

params.add(new BasicNameValuePair("_t","_t"));//使用URL實體轉換工具

UrlEncodedFormEntity entityParam = new UrlEncodedFormEntity(params, "UTF-8");

httpPost.setEntity(entityParam);//執行請求

response=httpClient.execute(httpPost);//獲得響應的實體對象

HttpEntity entity=response.getEntity();//使用Apache提供的工具類進行轉換成字符串

int code =response.getStatusLine().getStatusCode();

System.out.println("StatusCode: " +code);

Assert.assertEquals(200,code);

entityStr=EntityUtils.toString(entity,"UTF-8");

System.out.println("接口返回結果是:="+entityStr);

}catch(Exception e){

e.printStackTrace();

}finally{//釋放資源

if(httpClient!=null) {

httpClient.close();

}if (response!=null){

response.close();

}

}

}

}

聲明:

1.示例使用testng,?因此必須在方法上添加@Test符號,便于被識別到是測試代碼塊

2.使用了java的httpclient,?它是一個客戶端的http通訊實現庫.

HttpClient的目標是發送和接收HTTP 報文,不緩存內容, 重新格式化請求/重定向URI,或者其它和 HTTP 運輸無關的功能。

3.使用了List 的實現類ArrayList來封裝對象,?ArrayList的優點是查詢速度比較快.

右鍵java文件, 選擇run 即可執行, 讓我們來看下執行結果:

思考:

這樣一個接口測試就實現了, 但作為一名嚴格要求自我的資深測試工程師來說, 這樣的設計合理嗎??是否滿足數據和測試業務分離, 斷言是否充足, 代碼是否可以重用,?怎么去管理N多個測試用例, 怎么降低代碼耦合度, 怎么進行多線程測試, 測試報告如何展示,如何自動構建, 諸多問題等待解決.

請持續關注我,?和你分享更多精彩內容.

Story:

人要有一個奮斗目標,這樣活起來才有精神,有奔頭。整天無所事事、無聊至極的,就是因為沒有目標。從小就要為自己的人生制定一個目標,然后不斷地向它靠近,終有一天你會達到這個目標。如果從小就糊里糊涂,對自己的人生不負責任,沒有目標沒有方向,那這一生也難有作為。每個人出門,都會有自己的目的地,如果不知道自己要去哪里,漫無目的地閑逛,那速度就會很慢;但當你清楚你自己要去的地方,你的步履就會情不自禁地加快。如果你分辨不清自己所在的方位,你會茫然若失;一旦你弄清了自己要去的方向,你會精神抖擻。這就是目

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533295.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533295.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533295.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

html5折疊卡片,基于HTML5折疊卡片式下拉菜單代碼

基于HTML5折疊卡片式下拉菜單代碼。這是一款基于jQueryCSS3HTML5實現的下拉列表框特效代碼。效果圖如下:實現的代碼。hmtl代碼:愛編程愛編程 jQuery特效 CSS3特效 HTML5特效 音效下載 flash動畫js代碼:(function ($) {var cards $(.card-dro…

fastexcel讀取excel追加寫入sheet頁_python筆記52:python操作excel

主要內容:小目標:掌握excel模塊主要內容:excel相關模塊,openpyxl安裝使用如果看完這篇文章,你還是弄不明excel相關操作; 你來找我,我保證不打你,我給你發100的大紅包。1. excel相關操…

HTML音樂播放沒聲音,網頁沒有聲音但系統顯示有聲音怎么回事?如何解決?

網友提問:為什么網頁沒有聲音,除了迅雷高清在線影院的視頻有聲音和本已經下載的歌或視頻有聲音外,其他網頁都沒有聲音!就是網頁沒聲音,其他一切正常!網頁沒有聲音但系統顯示有聲音;網頁在線視頻…

html層次選擇器例題,詳解強大的jQuery選擇器之基本選擇器、層次選擇器

jQuery允許開發者使用從CSS1到CSS3幾乎所有的選擇器,以及jQuery獨創的高級而復雜的選擇器。另外還可以加入插件使其支持XPath選擇器,甚至開發者可以編寫屬于自己的選擇器(即選擇器插件,參考上篇:jQuery插件原來如此簡單——jQuery…

cesium 經緯度繪制點_炫酷大屏地圖自定義繪制(一)

現在數據中臺的概念炒的火熱,那在收集到數據后就要想辦法去設計大屏,可視化展現。往往大屏都會涉及到地理位置的顯示。對于常見的省市區,網上都已經提供了地理json數據,那對于需要定制化的我們要怎么處理呢?首先我們還…

關于python語言和人工智能下哪個說法不正確_“在資源管理器”窗口中,文件夾圖標左側有“...

【單選題】表示串行數據傳輸速率的指標為:___。【單選題】串行口工作在方式0時,其波特率:___。【簡答題】發布混合堿含量的測定三個錐形瓶的滴定終點顏色【簡答題】將自己做的三個錐形瓶的滴定終點顏色拍照發上來(三個瓶子并排擺在白色托盤中)【單選題】Guido van Rossum正式對…

html瞄點四大名著有圖片,四大名著手抄報圖片圖和文字資料

四大名著之【三國演義】羅貫中(1330年一1400年之間),名本,號湖海散人,明代通俗小說家。他的籍貫一說是太原(今山西),一說是錢塘(今浙江杭州),不可確考。據傳說,羅貫中曾充任過元末農民起義軍張士誠的幕客&a…

shell181網格劃分_ANSYS軟件中SHELL181單元參數詳解(1)

SHELL181單元說明SHELL181單元適合對薄的到具有一定厚度的殼體結構進行分析。它是一個4結點單元,每個結點具有6個自由度:x,y,z方向的位移自由度和繞X,Y,Z軸的轉動自由度。(如果應用了薄膜選項的話,那該單元則只有移動自由度了)。簡并三角形選…

怎樣查詢2021高考模擬成績,2021年高三一模二模三模哪個成績更接近高考成績,看看網友是怎么評論...

2021年高三一模二模三模哪個成績更接近高考成績雖然大多數人認為一模的成績最接近高考,基本定型了,但高考變幻莫測,成績很有可能發生變化,成績升降都是很難說的。高三一模之后成績也沒有定型,還有最后逆轉的機會。高考…

lisp 標記形心_標記-整理算法

定義該算法分為標記和整理兩個階段,標記階段會遍歷并標記活動對象,整理階段通過數次搜索堆來重新裝填活動對象,它們聚集到了堆的一端。lisp2算法forwarding指針表示活動對象的目標地址過程概要初始狀態標記結束后整理結束后整理階段偽代碼com…

js遍歷json數組給html td賦值,JS實現給json數組動態賦值的方法示例

關注微信公眾號JS實現給json數組動態賦值的方法示例轉載 更新時間:2017年07月04日 10:19:00 作者:小魏的馬仔這篇文章主要介紹了JS實現給json數組動態賦值的方法,結合實例形式分析了javascript針對json數組的遍歷、賦值等常用操作技巧,需要的朋友可以…

甘肅民族師范學院計算機科學系,甘肅民族師范學院計算機科學與技術專業2016年在甘肅理科高考錄取最低分數線...

類似問題答案衡陽師范學院計算機科學與技術專業2016年在甘肅理科高考錄取最低分數線學校 地 區 專業 年份 批次 類型 分數 衡陽師范學院 甘肅 計算機科學與技術 2016 二批 理科 448 學校 地 區 專業 年份 批次 類型 分數 衡陽師范學院 甘肅 計算機科學與技術 2016 二批 理科 44…

python面試題百度云下載_分享三道Python經典面試題

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓驗證郵箱格式驗證郵箱的格式,不同語言的實現大同小異,通過正則表達式是最快捷的匹配方式,但對于不熟悉正則的同學看著一長串匹配符還是比較頭痛的,其實也沒那么恐怖。熟悉python 中正…

計算機科學與技術專業實習招聘,中科院研究生院招聘GIS或計算機專業實習生

中科院研究生院招聘GIS或計算機專業實習生由于項目需要,中科院研究生院特招聘GIS或計算機方向實習生,具體要求如下:項目名稱:油氣田WebGIS系統招聘人數:1人(目前已有1人)主要工作是根據油氣田生產需要,實現WebGIS支持下…

r語言regexpr函數_R語言學習筆記-文本挖掘之字符處理(1)

在挖掘分析的過程當中對字符串的處理是極為重要的,且出現也較為頻繁,R語言作為當前最為流行的開源數據分析和可視化平臺,雖然文本的處理并不是它的強項, 但是R語言還是包含大量的字符串操作工具,本章著重整理了部分常用字符處理函…

html div如何列對其,CSS:自適應N列布局如何解決兩端對齊

關于每行N列的這種布局,存在一個兩端對齊的問題,因為每一列都會存在一個margin-left或者margin-right,導致最后一個超出父元素的邊界。通過一番努力,終于解決了這個遺留很久的問題,廢話不多說,先看做完之后…

v380智能快配連接不上怎么辦_Win7系統電腦設置連接遠程桌面的操作方法

Win7系統電腦遠程桌面無法連接怎么辦?Win7怎么設置連接遠程桌面?請看下文具體操作步驟。一般情況下,對Win7的遠程連接只需要5步即可完成遠程連接的設置:1)查詢并記錄遠程計算機的IP,開始——運行——輸入cmd&#xff0…

計算機專業買win,新買的電腦是win10系統,有的人卻費盡心思重裝成win7,為什么呢...

簡單地說,現在的新電腦幾乎都是最新的windows系統,而廠商通常預裝的是windows10家庭版,雖說沒有多強的功能,但也能夠滿足我們日常使用的需求。重要的是預裝的win10系統是正版的!但不難發現,即便是正版的win…

wireshark網卡權限_網絡分析系列之六_Wireshark安裝

Wireshark對常見操作系統都支持安裝,包括Windows系統、Mac OS X以及基于Linux的系統。你可以在Wireshark的官方網站上,查找所有 Wireshark支持安裝的操作系統列表,以及系統版本和硬件要求信息。Wireshark安裝系統支持和要求截止Wireshark版本…

c# 替換html注釋,C#?替換div標簽

C# 替換div標簽0fillm2013.11.06瀏覽24次分享舉報estyle"BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 300px; HEIGHT: 200px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid"iddivMediaPlayer>codebase,http://download.ma…