国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

test mock-03-wiremock 模擬 HTTP 服務(wù)的開源工具 flexible and open source API mocking

這篇具有很好參考價值的文章主要介紹了test mock-03-wiremock 模擬 HTTP 服務(wù)的開源工具 flexible and open source API mocking。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

拓展閱讀

test 之 jmockit-01-overview

jmockit-01-test 之 jmockit 入門使用案例

mockito-01-overview mockito 簡介及入門使用

PowerMock

Mock Server

ChaosBlade-01-測試混沌工程平臺整體介紹

jvm-sandbox 入門簡介

wiremock

WireMock是一個流行的開源工具,用于API模擬測試,每月下載量超過500萬次。它可以幫助您創(chuàng)建穩(wěn)定的測試和開發(fā)環(huán)境,隔離與不穩(wěn)定的第三方服務(wù)的依賴,并模擬尚不存在的API。

WireMock于2011年由Tom Akehurst作為Java庫啟動,現(xiàn)在已經(jīng)涵蓋多種編程語言和技術(shù)棧。

它可以作為庫或客戶端包裝器在許多語言中運行,也可以作為獨立的服務(wù)器運行。項目及其生態(tài)系統(tǒng)背后有一個龐大的社區(qū)。

WireMock支持多種創(chuàng)建模擬API的方法 - 在代碼中、通過其REST API、作為JSON文件以及通過記錄代理到另一個目標的HTTP流量。

WireMock具有豐富的匹配系統(tǒng),允許將傳入請求的任何部分與復(fù)雜和精確的條件進行匹配。

通過基于Handlebars的模板系統(tǒng),可以動態(tài)生成任何復(fù)雜度的響應(yīng)。

最后,由于其眾多的擴展點和全面的API,WireMock易于集成到任何工作流程中。

關(guān)鍵特性

WireMock可以在單元測試中運行,也可以作為獨立進程或容器運行。

其關(guān)鍵特性包括:

  • 可通過URL、頭部和正文內(nèi)容模式進行HTTP響應(yīng)存根匹配
  • 支持通過流暢的Java API、JSON文件和HTTP傳輸?shù)腏SON進行配置
  • 存根的錄制和回放
  • 請求驗證
  • 故障和響應(yīng)延遲注入
  • 按請求的條件代理
  • 用于請求檢查和替換的瀏覽器代理
  • 具有狀態(tài)的行為模擬
  • 可擴展性

WireMock生態(tài)系統(tǒng)

WireMock具有針對其他語言和測試框架的實現(xiàn)和適配器。它支持多種技術(shù)棧的適配器和實現(xiàn),包括Python、.NET、Golang和Rust。

對于JVM生態(tài)系統(tǒng),有適用于Spring Boot、Quarkus、Kotlin、Testcontainers等的庫。

WireMock還可以在Android支持上運行,并即將提供官方的gRPC和GraphQL適配器。

快速入門:使用Java和JUnit 4進行API模擬

在本指南中,我們將使用WireMock和JUnit 4編寫API單元測試。

先決條件

  • Java 11或17
  • Maven或Gradle,使用最新版本
  • 一個基于Maven和Gradle的Java項目
  • 一個我們將用作演練場的單元測試文件

將WireMock依賴項添加到您的項目

WireMock通過Maven Central分發(fā),可以通過常見的構(gòu)建工具的依賴管理包含在您的項目中。

要將標準的WireMock JAR添加為項目依賴項,請將以下依賴項放在構(gòu)建文件的dependencies部分中。

在我們的測試中,我們還將使用AssertJ來驗證響應(yīng)。為了發(fā)送請求,我們將使用Java 11+中可用的嵌入式HTTP客戶端。

如果您想添加一個Java 1.8測試,您將需要添加一個外部的HTTP客戶端實現(xiàn),如Apache HttpClient。

<dependency>
    <groupId>org.wiremock</groupId>
    <artifactId>wiremock</artifactId>
    <version>3.3.1</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>3.24.2</version>
    <scope>test</scope>
</dependency>

添加WireMock規(guī)則

WireMock提供了一些JUnit規(guī)則來管理服務(wù)器的生命周期和設(shè)置/拆卸任務(wù)。

要使用WireMock的流暢API,請?zhí)砑右韵聦?dǎo)入語句:

import static com.github.tomakehurst.wiremock.client.WireMock.*;

為了在每個測試用例中自動啟動和停止WireMock,請將以下內(nèi)容添加到您的測試類(或其超類):

@Rule
public WireMockRule wireMockRule = new WireMockRule(8089); // No-args constructor defaults to port 8080

寫一個測試

import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

...

@Test
public void exampleTest() {
    // Setup the WireMock mapping stub for the test
    stubFor(post("/my/resource")
        .withHeader("Content-Type", containing("xml"))
        .willReturn(ok()
            .withHeader("Content-Type", "text/xml")
            .withBody("<response>SUCCESS</response>")));

    // Setup HTTP POST request (with HTTP Client embedded in Java 11+)
    final HttpClient client = HttpClient.newBuilder().build();
    final HttpRequest request = HttpRequest.newBuilder()
        .uri(wiremockServer.getRequestURI("/my/resource"))
        .header("Content-Type", "text/xml")
        .POST().build();

    // Send the request and receive the response
    final HttpResponse<String> response =
            client.send(request, HttpResponse.BodyHandlers.ofString());

    // Verify the response (with AssertJ)
    assertThat(response.statusCode()).as("Wrong response status code").isEqualTo(200);
    assertThat(response.body()).as("Wrong response body").contains("<response>SUCCESS</response>");
}

拓展測試類

為了對由規(guī)則創(chuàng)建的WireMock服務(wù)器的設(shè)置有更多的控制,您可以將通過流式構(gòu)建的Options對象傳遞給規(guī)則的構(gòu)造函數(shù)。

讓我們以更改端口號為例:

import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
...

@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(8089).httpsPort(8443));

您可以讓W(xué)ireMock(更準確地說是JVM)選擇隨機的、空閑的HTTP和HTTPS端口。如果您想要并發(fā)運行測試,這是一個很好的選擇。

@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().dynamicPort().dynamicHttpsPort());

可以用下面的發(fā)現(xiàn)對應(yīng)的端口信息:

int port = wireMockRule.port();
int httpsPort = wireMockRule.httpsPort();

wiremock 是如何實現(xiàn) http 服務(wù)的模擬的?原理是什么

WireMock實現(xiàn)HTTP服務(wù)的模擬的基本原理是攔截和模擬HTTP請求,并根據(jù)預(yù)定義的規(guī)則返回相應(yīng)的模擬響應(yīng)。

以下是WireMock的基本原理:

  1. 代理模式: WireMock 可以作為一個代理服務(wù)器,攔截客戶端發(fā)出的HTTP請求。當 WireMock 作為代理運行時,它會監(jiān)聽指定的端口,并將接收到的請求發(fā)送到實際的目標服務(wù)器。WireMock 在中間攔截這些請求,允許你模擬響應(yīng)。

  2. Stubbing: 在 WireMock 中,模擬服務(wù)的期望行為通過 stub(存根)來定義。一個 stub 定義了一個匹配規(guī)則和一個對應(yīng)的響應(yīng)。當收到符合匹配規(guī)則的請求時,WireMock 將返回預(yù)定義的響應(yīng),而不是將請求轉(zhuǎn)發(fā)到實際的目標服務(wù)器。

  3. 匹配規(guī)則: WireMock 提供了豐富的匹配規(guī)則,可以根據(jù)請求的URL、HTTP方法、請求體、查詢參數(shù)等條件進行匹配。這使得可以精確地定義哪些請求應(yīng)該由 WireMock 進行模擬響應(yīng)。

  4. DSL(領(lǐng)域特定語言): WireMock 使用了DSL,即一種特定于領(lǐng)域的語言,用于定義 stubs。DSL 提供了清晰而簡潔的語法,使得創(chuàng)建和配置 stubs 變得直觀和易讀。

  5. 內(nèi)嵌服務(wù)器: 除了代理模式,WireMock 還可以作為一個獨立的HTTP服務(wù)器運行。在這種情況下,它監(jiān)聽指定的端口并直接處理客戶端發(fā)出的請求,而不需要實際的目標服務(wù)器。

  6. 錄制和回放: WireMock 具有錄制和回放功能,可以用于記錄實際服務(wù)的請求和響應(yīng),然后將其用作模擬服務(wù)的期望行為。這有助于創(chuàng)建與實際服務(wù)行為一致的 stubs。

http服務(wù)模擬工具,test,http,開源,網(wǎng)絡(luò)協(xié)議,單元測試,unit testing文章來源地址http://www.zghlxwxcb.cn/news/detail-811070.html

到了這里,關(guān)于test mock-03-wiremock 模擬 HTTP 服務(wù)的開源工具 flexible and open source API mocking的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 10 款常用的 API Mock 服務(wù)器工具

    你是否曾因為后端接口還沒開發(fā)完成而苦惱,而你作為前端開發(fā)人員卻迫不及待地想要開始寫代碼?API Mock 服務(wù)器就是你的救星!它們可以快速搭建一個虛擬的后端環(huán)境,使你可以立即開始測試和開發(fā)。這篇文章將介紹 10 款 API Mock 服務(wù)器工具,并以輕松幽默的語氣向你展示

    2024年02月08日
    瀏覽(39)
  • 【P4】JMeter 原生錄制方式——HTTP代理服務(wù)器(HTTP(S) Test Script Recorder)

    【P4】JMeter 原生錄制方式——HTTP代理服務(wù)器(HTTP(S) Test Script Recorder)

    HTTP代理服務(wù)器允許JMeter在使用常規(guī)瀏覽器,瀏覽Web應(yīng)用程序時攔截并記錄操作。JMeter將創(chuàng)建測試樣本對象,并將其直接存儲到的測試計劃中。錄制腳本時,最好使用無痕瀏覽模式,這可以確保瀏覽器沒有存儲的Cookie信息,并防止保存某些更改。例如:Firefox不允許永久保存證

    2024年02月11日
    瀏覽(26)
  • 光伏發(fā)電系統(tǒng)模擬及其發(fā)電預(yù)測開源python工具pvlib

    光伏發(fā)電系統(tǒng)模擬及其發(fā)電預(yù)測開源python工具pvlib

    pysolar是一個用于計算太陽位置和輻照量的Python庫。它是基于python語言編寫的,可以方便地在各種python項目中使用。pysolar主要用于計算太陽的位置、太陽高度角、太陽方位角、日出和日落時間等信息。這些信息可以用于太陽能電池板和太陽能集熱器等應(yīng)用的設(shè)計和優(yōu)化。 Pys

    2023年04月08日
    瀏覽(86)
  • PyBullet:一種用 Python 構(gòu)建的開源 3D 物理模擬工具(教程含源碼)

    PyBullet 是一種物理引擎,用于模擬剛體動力學(xué)并支持創(chuàng)建逼真的 3D 環(huán)境。它基于 Bullet Physics Library,并提供易于使用的界面來模擬各種物理現(xiàn)象。在這篇博文中,我們將探討 PyBullet 中的用例和可用方法。 PyBullet 在各個行業(yè)都有廣泛的用例。以下是 PyBullet 的一些最常見用例:

    2024年02月04日
    瀏覽(19)
  • 開源.NetCore通用工具庫Xmtool使用連載 - HTTP請求篇

    《上一篇》 介紹了Xmtool工具庫中的XML操作類庫,今天我們繼續(xù)為大家介紹其中的HTTP請求類庫。 在現(xiàn)如今的軟件需求場景中,HTTP網(wǎng)絡(luò)請求幾乎是開發(fā)過程中必然會使用的功能;而系統(tǒng)自帶的HTTPClient對象使用起來并不是那么容易和友好,因此我們對其進行了二次封裝成了一個

    2024年02月13日
    瀏覽(18)
  • 14.Netty源碼之模擬簡單的HTTP服務(wù)器

    14.Netty源碼之模擬簡單的HTTP服務(wù)器

    HTTP 服務(wù)器是我們平時最常用的工具之一。同傳統(tǒng) Web 容器 Tomcat、Jetty 一樣,Netty 也可以方便地開發(fā)一個 HTTP 服務(wù)器。我從一個簡單的 HTTP 服務(wù)器開始,通過程序示例為你展現(xiàn) Netty 程序如何配置啟動,以及引導(dǎo)器如何與核心組件產(chǎn)生聯(lián)系。 完整地實現(xiàn)一個高性能、功能完備、

    2024年02月15日
    瀏覽(23)
  • 云服務(wù)仿真:完全模擬 AWS 服務(wù)的本地體驗 | 開源日報 No.45

    云服務(wù)仿真:完全模擬 AWS 服務(wù)的本地體驗 | 開源日報 No.45

    Stars: 48.7k License: NOASSERTION LocalStack 是一個云服務(wù)仿真器,可以在您的筆記本電腦或 CI 環(huán)境中以單個容器運行。它提供了一個易于使用的測試/模擬框架,用于開發(fā)云應(yīng)用程序。主要功能包括: 在本地機器上完全運行 AWS 應(yīng)用程序或 Lambda 函數(shù),無需連接到遠程云提供商。 支持

    2024年02月07日
    瀏覽(55)
  • 前端先行模擬接口(mock+expres+json)

    前端先行模擬接口(mock+expres+json)

    目錄 mock模擬數(shù)據(jù):data/static.js 路由:index.js 服務(wù)器:server.js yarn /node 啟動服務(wù)器:yarn start 客戶端:修改代理路徑(修改設(shè)置后都要重啟才生效) 示例 后端框架express構(gòu)建服務(wù)器 前端發(fā)起請求 JSON 靜態(tài)數(shù)據(jù):res.status === 304 3xx - Redirection(重定向):附加操作已完成請求 301 Mov

    2024年02月13日
    瀏覽(13)
  • 百度又開源一款壓測工具,可模擬幾十億的并發(fā)場景,太強悍了

    百度又開源一款壓測工具,可模擬幾十億的并發(fā)場景,太強悍了

    dperf 是百度開源的一款基于 DPDK 的 100Gbps 網(wǎng)絡(luò)性能和負載測試軟件,能夠每秒建立千萬級的 HTTP 連接、億級別的并發(fā)請求和數(shù)百 Gbps 的吞吐量。 性能強大: 基于 DPDK,使用一臺普通 x86 服務(wù)器就可以產(chǎn)生巨大的流量:千萬級的 HTTP 每秒新建連接數(shù),數(shù)百 Gbps 的帶寬,幾十億的

    2024年02月12日
    瀏覽(22)
  • 【Fiddler】Fiddler實現(xiàn)mock測試(模擬接口數(shù)據(jù))

    【Fiddler】Fiddler實現(xiàn)mock測試(模擬接口數(shù)據(jù))

    軟件接口測試過程中,經(jīng)常會遇后端接口還沒有開發(fā)完成,領(lǐng)導(dǎo)就讓先介入測試,然后縮短項目時間,有的人肯定會懵,接口還沒開發(fā)好,怎么介入測試,其實這就涉及到了我們要說的mock了。 一、mock原理 mock測試其根本任務(wù)就是能夠模擬后端服務(wù)器接口數(shù)據(jù)。 其實就是提供

    2024年02月17日
    瀏覽(13)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包