接口測試筆記

4、接口測試自動化

接口自動化概述


HttpClient

HttpClient開發過程

創建Java工程
新建libs庫目錄
HttpClient 工具下載及引入

  • https://hc.apache.org/index.html
  • 工程中引入jar包

Get請求

HttpGet方法---發起Get請求

創建HttpClient對象

  • ??? CloseableHttpClient httpclient = HttpClients.createDefault();

創建帶請求地址的HttpGet對象

  • HttpGet httpGet = new HttpGet("http://xxxxxx");
  • //ClassicHttpRequest get = ClassicRequestBuilder.get(url).build();

執行HttpGet請求,獲得響應

  • client.execute(get, response -> {})

獲取響應實體

  • HttpEntity entity = response.getEntity();

獲取響應內容

  • EntityUtils.toString(entity);

斷開連接

  • response.close();
  • httpclient.close();

請求Header類型:Content-Type=application/json

skulist-1測試用例詳解

用例:獲取所有商品的sku列表成功

skulist-2測試用例詳解

用例:獲取goodsId=1的商品sku信息成功

skulist-3測試用例詳解

用例:獲取goodsId=2147483648的商品sku信息失敗

HttpGet用法總結

注意事項:

  • 請求地址中有多個參數用&符號連接,例如http://aaaaa?id=1&name=tom
  • 請求參數如包含非英文字符,需要encode轉碼

例如:

  • URLEncoder.encode("{\"pId\":\"123456\"}", "UTF-8");
  • String url3 = "http://localhost:8899/common/getTransportFee?id=1&addressDetail=";
  • String ulr3Param = URLEncoder.encode("浙江省_杭州市_濱江區", "UTF-8");

POST

HTTP請求格式-POST方法

請求(Request)

請求行

POST?/xinhu/index.php?a=check&m=login

HTTP/1.1

請求頭

Accepttext/html,application/xhtml+xml

Accept-Encoding:?gzip,?deflate

Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

Connection:keep-alive

Hostlocalhost:8032

請求正文

adminuser=YWRtaW4%3A&=123456&rempass=0&button=&jmpass=false&device=1517376146707&adminpass=MTIzNDU2

響應(Response)

狀態行

HTTP1.1?200?OK

響應頭

ConnectionKeep-Alive

Content-Encodinggzip

Content-Length1234

Content-Typetext/html;charset=utf-8

DateMon,?05?Feb?2018?02:43:40?GMT

響應正文

{"success":true,"face":"http:\/\/localhost:8032\/xinhu\/upload\/face\/1.jpg"}??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

創建HttpClient對象

  • ??? CloseableHttpClient? httpclient = HttpClients.createDefault();

創建帶請求地址的HttpPost 對象

  • ??????? HttpPost httpPost = new HttpPost("https://www.xxx.com");

設置HttpPost對象Header屬性?? ?

  • ???? httpPost.setHeader("Content-Type","application/json");

設置HttpPost 參數

  • ??? StringEntity entity = new StringEntity("para","utf-8");
  • ??? httpPost.setEntity(entity);

執行HttpPost請求,獲取post請求的響應

  • ???? httpclient.execute(httpPost,resp ->{});

獲取響應實體

  • ??? HttpEntity entity = response.getEntity();

獲取響應內容

  • ??? EntityUtils.toString(entity);

斷開連接

  • ??? response.close();
  • ??? httpclient.close();

請求Header類型:Content-Type=application/json

login-1測試用例詳解

響應結果
{"message":"success","code":200}

HttpClient登錄模擬總結

注意事項:

  • 根據具體登錄請求選擇HttpEntity具體類型(HttpEntity? ?的兩個實現類:?StringEntity和 UrlEncodedFormEntity)
  • 登錄請求的Content-Type需要正確設置
  • 如果不想使用同一個HttpClient對象傳遞登錄信息,可以考慮對需要登錄信息請求分別設置Cookie:

httpPost.setHeader("Cookie"," mindsparktb_232530392=true; mindsparktbsupport_232530392=true");

HttpClient設置代理
  • HttpHost proxy = new HttpHost("127.0.0.1", 8888);
  • CloseableHttpClient client = HttpClients.custom().setProxy(proxy).build();

引入測試框架

測試框架:TestNG

測試驗證點、用例集的組織、測試報告

TestNG簡介
  • The next generation of unit testing
  • Cedric Beust
  • http://testng.org/doc/
  • 基于Junit、Nunit并支持注解、數據驅動、多線程執行等特性的Java測試框架

TestNG基礎:注解(Annotation)

JDK5引入注解,TestNG用以方便的標注測試方法和組件

  • @Test 標注測試方法
  • @BeforeTest 標注全部測試方法執行前需要執行的方法
  • @AfterClass 標注測試類全部方法執行之后需執行的方法
  • @DataProvider 數據驅動

注意:TestNG執行測試方法之前,都會重新實例化測試類

TestNG基礎:斷言(Assert)

org.testng.Assert

  • fail 直接失敗測試用例
  • assertTrue??? 判斷是否為true
  • assertNull??? 判斷是否為null
  • assertEquals??? 判斷是否相等

TestNG基礎:Test屬性使用

TestNG基礎:@DataProvider

TestNG基礎:DataProvider屬性使用
  • 使用數據驅動,復用測試方法

TestNG基礎:testng.xml用例集
  • 指定測試類

TestNG自帶測試報告

TestNG+ReportNG報告

Allure--自動化測試報告生成

TestNG+FreeMarker測試報告


接口測試結果驗證

如何驗證

Java中解析常用的類庫有FastJson、JSON-Java、Gson等

解析JSON數據

  • fastjson2-2.0.39.jar

驗證JSON數據正確

  • TestNG、Assert

解析JSON


面向場景的接口自動化測試

用例回顧

用例步驟--登錄成功

用例步驟-查詢收貨地址

用例步驟-計算運費

用例步驟-提交訂單

場景測試總結

注意事項:

  • 使用TestNG的BeforeClass和AfterClass去初始化和關閉HttpClient對象
  • 使用dependsOnMethods屬性關聯場景的接口

注意事項:

  • 根據具體場景分析關聯的接口,使用TestNG功能來安排用例執行順序
  • 使用成員變量來傳遞接口返回數據
  • 在不同的HttpClient中間顯示傳遞Cookie

返回Cookie

CookieStore cookie =new BasicCookieStore();
httpClient =HttpClients.custom().
setDefaultCookieStore(cookie).build();

設置Cookie

httpClient =HttpClients.custom().
setDefaultCookieStore(cookie).build();

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

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

相關文章

查找sql中涉及的表名稱

import pandas as pd import datetime todaystr(datetime.date.today())filepath/Users/kangyongqing/Documents/kangyq/202303/分析模版/sql表引用提取/ file101試聽課明細.txt newfilefile1.title().split(.)[0]with open(filepathfile1,r) as file:contentfile.read().lower…

如何在Ubuntu上構建編譯LLVM和ISPC,以及Ubuntu上ISPC的使用方法

之前一直在 Mac 上使用 ISPC,奈何核心/線程太少了。最近想在 Ubuntu 上搞搞,但是 snap 安裝的 ISPC不知道為什么只能單核,很奇怪,就想著編譯一下,需要 Clang 和 LLVM。但是 Ubuntu 很搞,他的很多軟件版本是…

【Spring IOC/AOP】

IOC 參考: Spring基礎 - Spring核心之控制反轉(IOC) | Java 全棧知識體系 (pdai.tech) 概述: Ioc 即 Inverse of Control (控制反轉),是一種設計思想,就是將原本在程序中手動創建對象的控制權&#xff…

電感與電容的具體應用

文章目錄 一、電感應用1.?電源濾波:2. 儲能——平滑“電流波浪”? ?3. 調諧——校準“頻率樂器”?4. 限流——防止“洪水災害”?二、電容應用1.核心特性理解2.應用場景 三.電容電感對比 一、電感應用 1.?電源濾波: ?場景:工業設備中…

前端面試:axios 請求的底層依賴是什么?

在前端開發中,Axios 是一個流行的 JavaScript 庫,用于發送 HTTP 請求。它簡化了與 RESTful APIs 的交互,并提供了許多便利的方法與配置選項。要理解 Axios 的底層依賴,需要從以下幾個方面進行分析: 1. Axios 基于 XML…

springboot 3 集成Redisson

maven 依賴 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.12</version></parent><dependencies><dependency><groupId>org.red…

C#中繼承的核心定義?

1. 繼承的核心定義? ?繼承? 是面向對象編程&#xff08;OOP&#xff09;的核心特性之一&#xff0c;允許一個類&#xff08;稱為?子類/派生類?&#xff09;基于另一個類&#xff08;稱為?父類/基類?&#xff09;構建&#xff0c;自動獲得父類的成員&#xff08;字段、屬…

Deep research深度研究:ChatGPT/ Gemini/ Perplexity/ Grok哪家最強?(實測對比分析)

目前推出深度研究和深度檢索的AI大模型有四家&#xff1a; OpenAI和Gemini 的deep research&#xff0c;以及Perplexity 和Grok的deep search&#xff0c;都能生成帶參考文獻引用的主題報告。 致力于“幾分鐘之內生成一份完整的主題調研報告&#xff0c;解決人力幾小時甚至幾天…

Android SharedPreference 詳解

前提&#xff1a;基于 Android API 30 1. 認識 SharedPreference SharedPreference 是 Android 提供的輕量級的&#xff0c;線程安全的數據存儲機制&#xff0c;使用 key-value 鍵值對的方式將數據存儲在 xml 文件中&#xff0c;存儲路徑為 /data/data/yourPackageName/share…

自動化測試腳本語言選擇

測試人員在選擇自動化測試腳本語言時面臨多種選項。Python、Java、C#、JavaScript 和 Ruby 都是常見選擇&#xff0c;但哪種語言最適合&#xff1f;本文將詳細分析這些語言的特點、適用場景和優劣勢&#xff0c;結合行業趨勢和社會現象&#xff0c;為測試人員提供全面指導。 選…

【Java項目】基于JSP的KTV點歌系統

【Java項目】基于JSP的KTV點歌系統 技術簡介&#xff1a;采用JSP技術、B/S結構、MYSQL數據庫等實現。 系統簡介&#xff1a;KTV點歌系統的主要使用者分為管理員和用戶&#xff0c;實現功能包括管理員&#xff1a;個人中心、用戶管理、歌曲庫管理、歌曲類型管理、點歌信息管理&a…

element-plus文檔解析之Layout布局(el-row,el-col)

前言 這是element-plus提供的響應式布局組件。可以非常方便的實現響應式布局以及快速按比例分塊。 例如實現下面的效果&#xff1a; 第一行&#xff1a;寬度占100% 第二行&#xff1a;寬度1&#xff1a;1 第三行&#xff1a;1&#xff1a;1&#xff1a;1 第四行&#xff1a;1…

【Java】——數據類型和變量

個人主頁&#xff1a;User_芊芊君子 &#x1f389;歡迎大家點贊&#x1f44d;評論&#x1f4dd;收藏?文章 文章目錄&#xff1a; 1.Java中的注釋1.1.基本規則1.2.注釋規范 2.標識符3.關鍵字4.字面常量5.數據類型6.變量6.1變量的概念6.2語法6.3整型變量6.3.1整型變量6.3.2長整…

串口數據記錄儀DIY,體積小,全開源

作用 產品到客戶現場出現異常情況&#xff0c;這個時候就需要一個日志記錄儀、黑匣子&#xff0c;可以記錄產品的工作情況&#xff0c;當出現異常時&#xff0c;可以搜集到上下文的數據&#xff0c;從而判斷問題原因。 之前從網上買過&#xff0c;但是出現過丟數據的情況耽誤…

JVM中是如何定位一個對象的

在 Java 中&#xff0c;對象定位指的是如何通過引用&#xff08;Reference&#xff09;在堆內存中找到對象實例及其元數據&#xff08;如類型信息&#xff09;。JVM 主要通過 直接指針訪問 和 句柄訪問 兩種方式實現&#xff0c;各有其優缺點和應用場景&#xff1a; 一、直接指…

Mac 如何在idea集成SVN

在windows系統上面有我們最為熟悉的小烏龜TortoiseSVN&#xff0c;在mac系統上面則沒有什么好用的svn的工具&#xff0c;而且大部分都付費&#xff0c;需要各種渠道找PJ版&#xff0c;費事費力&#xff0c;作為程序員&#xff0c;大部分人應該都會安裝開發工具&#xff0c;本文…

批量測試IP和域名聯通性

最近需要測試IP和域名的聯通性&#xff0c;因數量很多&#xff0c;單個ping占用時間較長。考慮使用Python和Bat解決。考慮到依托的環境&#xff0c;Bat可以在Windows直接運行。所以直接Bat處理。 方法1 echo off for /f %%i in (E:\封禁IP\ipall.txt) do (ping %%i -n 1 &…

LabVIEW變頻器諧波分析系統

隨著工業自動化的發展&#xff0c;變頻器在電力、機械等領域的應用日益廣泛&#xff0c;但諧波問題直接影響系統效率與穩定性。傳統諧波檢測設備&#xff08;如Norma5000&#xff09;精度雖高&#xff0c;但價格昂貴且操作復雜&#xff0c;難以適應現場快速檢測需求。本項目基于…

Unity Shader學習總結

1.幀緩沖區和顏色緩沖區區別 用于存儲每幀每個像素顏色信息的緩沖區 幀緩沖區包括&#xff1a;顏色緩沖區 深度緩沖區 模板緩沖區 自定義緩沖區 2.ImageEffectShader是什么 后處理用的shader模版 3.computerShader 獨立于渲染管線之外&#xff0c;在顯卡上運行&#xff0c;大量…

OpenPLC WebServer啟動

簡述 OpenPLC OpenPLC 可運行在嵌入式系統和普通計算機上&#xff0c;其基本原理是在硬件上安裝類似 Linux 的操作系統&#xff0c;并在該環境下運行 OpenPLC 應用程序&#xff0c;從而讓用戶開發、調試和運行工業自動化控制邏輯。它目前只支持部分 ARM 架構的嵌入式系統&…