HttpClient +Testng(1)進行介面測試入門
參考以下等文件:
關於httpclient等概念東西上述幾位大神的文件中比較多,在這裡我們主要簡單搭建我們自己所需的最小化框架,並執行起來
一、所需環境的安裝
這裡可以參考以前文件中的安裝步驟
我們主要是安裝下面兩個工具就可以
1、JDK的安裝和JAVA_HOME的配置
注意:這裡唯一不一樣是,下面專案中的jdk已使用jdk8
2、Maven安裝及配置
二、開始編寫第一個Test
第一個Test,我們寫個京東登入介面的功能,下面是具體的實現過程
1、在intellij idea建立一個Maven專案FirstAPITest,在pom.xml新增如下依賴,如下圖所示
在pom.xml裡面新增相應的依賴
<properties> <!-- 指明編譯原始碼時使用的字元編碼,maven編譯的時候預設使用的GBK編碼, 通過project.build.sourceEncoding屬性設定字元編碼,告訴maven這個專案使用UTF-8來編譯 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!--這裡可以設定需要執行group--> <groupsTest>execShell</groupsTest> </properties> <dependencies> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.9.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.10-FINAL</version> </dependency> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.9.1</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.2</version> </dependency> <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.54</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <!--這個引用一直下載不成功,所以只能通過手工下載下來,然後在maven中手動引用 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> </dependency> --> <!--下面幾個引用包是我們手動下載並新增的依賴--> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${basedir}/json/commons-beanutils-1.7.0.jar</systemPath> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${basedir}/json/commons-collections-3.1.jar</systemPath> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${basedir}/json/commons-lang-2.5.jar</systemPath> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${basedir}/json/commons-logging.jar</systemPath> </dependency> <dependency> <groupId>ezmorph</groupId> <artifactId>ezmorph</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${basedir}/json/ezmorph-1.0.3.jar</systemPath> </dependency> <dependency> <groupId>json-lib</groupId> <artifactId>json-lib</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${basedir}/json/json-lib-2.4-jdk15.jar</systemPath> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> <configuration> <threadCount>1</threadCount> <forkCount>1</forkCount> <reuseForks>true</reuseForks> <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine> <forkMode>once</forkMode> <argLine>-Dfile.encoding=UTF-8</argLine> <groups>${groupsTest}</groups> <includes> <include>**/*Test.java</include> </includes> </configuration> </plugin> </plugins> </build>
注意:上面json-lib的包沒有自動下載成功,所以採用手動下載後,放到專案根目錄資料夾json(該目錄是手動建立的)中,如下圖所示,然後再關聯進來,具體見上面配置。
之後在編輯器右側找到Maven Projects外掛,在FirstAPITest專案下的LifeCycle中點選 “test”,如下圖所示標識1所示。等待專案構建完成後,再點選Maven Projects中的Reimports按鈕,如下圖所示標識 2所示。
該操作是讓maven把我們需要用到的Lib自動下載下來。如果之前已經下載過了,則只要單擊標識2就可以
如下圖所示表示上述標識1的test構建完成
2、建立第一個介面測試
FirstAPITest專案中,在目錄test->java下新建一個類FirstTest.java,如如下圖所示
2.1 首先使用Fiddler檢視京東登入介面
寫了一會Fiddler的使用方法,但是後來還是覺得網上這些已經寫的相當具體了,就直接貼上連結來更好
下面我們著重看下京東登入介面在Fiddler中的檢視。這裡我在登入時,使用者名稱和密碼都是隨便寫成test
則在Fiddler中捕獲到的Http請求可看到,如下圖所示的情況
上面中可看到紅線標註的請求就是京東登入時,我們捕獲到的HTTP請求
可看到該請求是Post型別,後面是請求對應的URL
然後看下右邊,這裡主要看Inspects這個標籤裡面的內容,其他標籤可看上面連結裡面介紹
該標籤裡面分上下兩部分,上面是請求相關的內容,下面是響應相關的資訊
上部分我們可以看下WebForms裡面的內容,如下圖所示
上面紅色框中顯示的是在京東登入對應的引數。
下面紅色框中顯示的是我們進行登入後,介面返回值,這裡我們是看JSON格式的返回值
通過上面,我們就可得知京東登入介面的請求型別、請求URL、請求引數。有了這些我們就可以建立一個最簡單的登入介面請求
2.2使用httpclient使用CSDN登入介面
在剛才建立的類FirstTest.java 輸入下面內容,這裡我們使用Testng作為介面單元測試框架:
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
public class FirstTest {
private HttpClient httpClient = new DefaultHttpClient();
private HttpPost httppost;
private HttpResponse response;
private HttpEntity entity;
private String postResult = null;
@Test
public void loginJDTest() {
String loginURL = "https://passport.jd.com/uc/loginService?uuid=ac394a05-05c0-4667-9940-2848f0c03809&&r=0.8636558873495089&version=2015";
//建立一個httppost請求
httppost = new HttpPost(loginURL);
//建立Post請求引數
List<NameValuePair> formparams1 = new ArrayList<NameValuePair>();
formparams1.add(new BasicNameValuePair("uuid", "ac394a05-05c0-4667-9940-2848f0c03809"));
formparams1.add(new BasicNameValuePair("eid", "Z6RZKBBPUUOORPHGELPNEZE6QHFEIE2IS4EQEBWOKH7VJAPDRIYUCSERJ3DLPNXRINL2ON3JC3IWHIG6L6PQMINSRY"));
formparams1.add(new BasicNameValuePair("fp", "4d981fbd1f0cf45fc497eac85348c0f3"));
formparams1.add(new BasicNameValuePair("_t", "_nthEAWj"));
formparams1.add(new BasicNameValuePair("loginType", "c"));
formparams1.add(new BasicNameValuePair("loginname", "test"));
formparams1.add(new BasicNameValuePair("nloginpwd", "test"));
formparams1.add(new BasicNameValuePair("chkRememberMe", ""));
formparams1.add(new BasicNameValuePair("authcode", ""));
formparams1.add(new BasicNameValuePair("pubKey", ""));
formparams1.add(new BasicNameValuePair("sa_token", "B68C442BE645754F33277E701208059033541C4BBD4BE7A99A94927BD4C8D683E0AC371429CD887688E05A86C51F7C70CE1F231D2A69583750E3923BA39E17118B83A1A1535BAA4F550CDAFD8E0D42172C6687DE87E4A85EA190DE5B35DA60BB878C558875475CC8D7AC4EA721F380156DD8325B976C3C3266E677EACB204C70C0AE07DF75629F5D845602B5968A00D446F66A103CEE76CED0ED85D144B22580F9A9997B4C6606BBA4ACDA2E5675E1753923A7ED53A8CF7426C57380A1EEB3ACC25E396C9D72455D2F8A2EE727961C86C40637A355F83A8A4AC98AB4DB238EA80705100E51EAD01C3E00868DBD94D782ECF89A937893739D7EB48CD4A388D6DA51AF477822A57E7C2708E31DCEB0ADCA88A95D3FB8D20278B263B38D3679DFCD935E41A9612638671D699F59F0E494BF90B522095FF1E38DDB16541245EDE6703833CD15F1AE6D59575C55942B5306C749927362E5D3D7643BA060F53ACFC46F7222511019EBABBCA226F656DC896C7655A90663537C9BBB13657879FA7B99474D4EC9DB2879B409FCE973FA0A9E4E60F4160C3961B55C3401C7CC402917F6A0984544D666FB2C40B6001E1D740C97DAD646E692403DB4A3191F9C638549616672180317153D3EDC2FA55EA740BC4BAE3F5032FD1E3CE7BDA785DDFD5B65AFD0A4CAC07B18AB8B48FFE65E6C25D8E9D9C6B89D4AC495C2FE7937233EC85C60C8C3EA4A9368697EB136B02766908846FE18CF29CA73A07A0D9C3EA0EEB7A75369"));
formparams1.add(new BasicNameValuePair("seqSid", "3845068114278942000"));
try {
httppost.setEntity(new UrlEncodedFormEntity(formparams1, "UTF-8"));
response = httpClient.execute(httppost);
entity = response.getEntity();
// 在這裡可以用Jsoup之類的工具對返回結果進行分析,以判斷建立是否成功
postResult = EntityUtils.toString(entity, "UTF-8");
System.out.println("檢視登入介面請求返回的結果:" + postResult);
} catch (Exception e) {
e.printStackTrace();
}
httppost.releaseConnection();
}
}
2.3執行程式
直接在編輯器中右鍵單擊,選擇“Run “loginJDTest””, 如下圖所示
執行後,可在日誌中檢視執行結果,如下圖所示
則我們完成第一個介面測試啦~~~
相關推薦
HttpClient +Testng(1)進行介面測試入門
參考以下等文件: 關於httpclient等概念東西上述幾位大神的文件中比較多,在這裡我們主要簡單搭建我們自己所需的最小化框架,並執行起來 一、所需環境的安裝 這裡可以參考以前文件中的安裝步驟 我們主要是安裝下面兩個工具就可以 1、JDK的安裝和JAVA_
介面自動化:HttpClient + TestNG + Java(一) - 介面測試概述+自動化環境搭建
1.1 介面測試簡介 1.1.1 什麼是介面測試 開始學習介面自動化測試之前,我們先要來了解什麼是介面,以及什麼是介面測試。 我們都知道,測試從級別上劃分可以分為 元件測試 整合測試 系統測試 驗收測試 其中在整合測試這個階段,一個最主要的測試活動就是介面測試。在元件測試中,我
jmeter介面效能測試(1)----簡單的介面測試入門
首先來看一下介面的資訊:host:http://api.jhled888.comuri: /cgi-bin/get.json 介面請求方式: GET 入參:appid: jhyjlhxa03q4f2qlmfappsecret:eb28066907b14310a9401c0586c840
介面自動化落地(二:HttpClient+testNG實現對介面的測試及校驗)
這是之前login介面的程式碼 @Test(groups = "loginTrue",description = "使用者登入介面測試") public void loginTrue() throws IOException { S
testng+maven+java+idea 介面測試入門二:使用reportng優化報告格式
方法1: 1、將reportng資訊配置到pom.xml中 <dependency> <groupId>org.uncommons</groupId> <artifactId>reportng</art
robotframework 學習(2) :使用RIDE進行介面測試之傳送請求和接收資料斷言
一、RIDE的介紹: RIDE是robotframework圖形操作前端,也可以理解為一種編輯器,它以cell的形式來進行定義資料和方法,返回結果等,我們可以使用它進行建立測試用例和編寫測試指令碼,並且執行自動化測試。
使用 EOLINKER 進行介面測試的最佳路徑 (下)
本文為 《使用 EOLINKER 進行介面測試的最佳路徑》 下半部分文章,主要介紹測試指令碼如何執行和報告生成,以及測試專案人員如何協作。還沒看過上篇文章請戳 使用 EOLINKER 進行介面測試的最佳路徑(上) 本文內容 測試指令碼執行及報告:講述如何在 EOLINKER 上執行介面測試指令碼,及
介面測試----入門篇
介面測試理念 什麼是介面測試 介面是指系統模組與模組或系統與系統間進行互動,一般我們用 的多的是HTTP協議的介面、WebService協議的介面,還有RPC(Remote Procedure Call Protocol)——遠端過
Python3利用HTTPTestRunner進行介面測試
匯入HTTPTestRunner後,對一些常用方法進行了封裝,之後只要呼叫即可。實現一條語句完成請求 約定:請求的json檔案放在本目錄的特定資料夾下 包含了各種請求條件下的重寫方法,基本滿足需求 import requests import unittest impo
使用Jmeter進行介面測試和壓力測試的配置和使用
1. Jmeter簡介 Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟體做壓力測試,它最初被設計用於Web應用測試,但後來擴充套件到其他測試領域。 JMeter 可以用於對伺服器、網路或物件模擬巨大的負載,來自不
利用unittest+ddt進行介面測試(一):簡單demo
原文地址 一般進行介面測試時,每個介面的傳參都不止一種情況,一般會考慮正向、逆向等多種組合。所以在測試一個介面時通常會編寫多條case,而這些case除了傳參不同外,其實並沒什麼區別。 這個時候就可以利用ddt來管理測試資料,提高程式碼複用率。 先看一個簡單的dem
excel+python進行介面測試
工作之餘寫了一個超級簡單的excel+python的介面測試指令碼,將多個介面的測試用例寫到表格裡後,指令碼針對單個介面測試它的全用例,然後將返回結果打印出來。之前用postman整合的時候引入excel表格,發現可以跑多個用例,但是我只能看到結果是成功(呈綠色)還是失敗(
如何優雅地使用httprunner進行介面測試
一天,你的領導X要你對某介面做測試,你一聽,介面測試,高大上。用什麼做好呢?postman?jmeter?loadrunner?balabala。。。優秀的你,想到了一大堆工具,當然也包括用python寫。為了凸顯B格,你選擇了python。新建一個a.py檔案,然後一頓猛如虎的擼程式碼:
postman如何繞過登入賬戶和密碼驗證,進行介面測試的方法
實測於:2019.01.08 參考原文:https://yq.aliyun.com/ziliao/403942 一、獲取登入後的cookie資料 1.開啟瀏覽器; 2.啟用開發者模式(F12鍵); 3.在開發者模式下執行:先開啟network,再點選all; 4.再回到使用者介面執行常規的登入
用Jmeter進行介面測試如何從資料庫獲取引數
用Jmeter進行介面測試如何從資料庫獲取引數 剛接觸介面測試,順便將自己的所學記錄下來,可能存在錯誤,如有需要後續會矯正。 此處以一個APP使用者登陸的介面為例。登入時需要的引數為username和password。 1. 建立並設定連線配置。 右擊執行緒組:新增 -
webservice介面測試,使用SoapUI工具進行介面測試
首先,介面使用cxf編寫介面,測試工具使用SoapUI 5.2.1 安裝之後是這樣的圖示: 測試操作步驟如下: <jaxws:endpoint id="ssg" implementor="cn.exchange.cxf.DataExchangeWebServiceImpl" addre
使用pytest+requests進行介面測試實踐——測試post請求
還是以Jenkins介面測試為例,Jenkins提供了“禁用”和“啟用”job的介面,這個介面的方法是POST方法。我們就以這個介面為例。 我們先點選任何一個job,比如“PythonRun”這個job,在開啟的頁面右下角REST API,在開啟的頁面中檢視提供的介面。我們
使用Jmeter進行介面測試時需登入後才能測試介面的配置
1、開啟Jmeter3.1: 啟動命令路徑:apache-jmeter-3.1\bin\jmeter.bat 2、測試步驟:1、測試計劃--右鍵新增--Threads--執行緒組2、執行緒組--右鍵--http資訊頭管理器 輸入Content-Type=application/json,表示介面請求的預
一個專門用來給測試學習者進行介面測試的公開介面
1、獲取學生資訊介面: 2、使用者註冊介面 3、登入 3、新增學生資訊 4、學生金幣充值 需要設定headers和body兩部分: 1.新增金幣需要以管理者身份新增(剛才“登入”介面測試時已經註冊了一個新使用者zhaixl,這個使用者已經被額外授權為管理員,
phoenixframe自動化平臺使用多批次資料進行介面測試的示例
package org.phoenix.cases.webservice; import java.io.IOException; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList;