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

接口自動(dòng)化測(cè)試套件封裝示例

這篇具有很好參考價(jià)值的文章主要介紹了接口自動(dòng)化測(cè)試套件封裝示例。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

?在Python中,我們可以使用requests庫(kù)來實(shí)現(xiàn)接口自動(dòng)化測(cè)試,并使用unittest或pytest等測(cè)試框架來組織和運(yùn)行測(cè)試套件。以下是一個(gè)基本的接口自動(dòng)化測(cè)試套件封裝示例:

首先,我們需要安裝所需的庫(kù):


pip install requests pytest

創(chuàng)建一個(gè)項(xiàng)目目錄結(jié)構(gòu),如下所示:


project/
│
├── common/           # 公共方法模塊
│   └── utils.py      # 存放請(qǐng)求、斷言等公共函數(shù)
│
├── conf/             # 配置模塊
│   └── config.py     # 存放測(cè)試環(huán)境、API基礎(chǔ)URL等配置信息
│
├── data/             # 測(cè)試用例參數(shù)模塊
│   └── test_data.json # 存放測(cè)試用例的輸入數(shù)據(jù)
│
├── log/              # 日志模塊
│   └── log.txt       # 存放測(cè)試過程中的日志信息
│
├── report/           # 測(cè)試報(bào)告模塊
│   └── report.html   # 自動(dòng)生成的測(cè)試報(bào)告
│
├── test_case/        # 測(cè)試用例模塊
│   ├── test_login.py # 登錄接口測(cè)試用例
│   ├── test_signup.py# 注冊(cè)接口測(cè)試用例
│   └── ...          # 其他接口測(cè)試用例
│
└── testsuite.py      # 測(cè)試套件文件,用于組織和運(yùn)行測(cè)試用例

同時(shí),在這我也準(zhǔn)備了一份軟件測(cè)試視頻教程(含接口、自動(dòng)化、性能等),需要的可以直接在下方觀看就行,希望對(duì)你有所幫助!【公眾號(hào):互聯(lián)網(wǎng)雜貨鋪】免費(fèi)領(lǐng)取軟件測(cè)試資料!

2024年P(guān)ython自動(dòng)化測(cè)試全套保姆級(jí)教程,70個(gè)項(xiàng)目實(shí)戰(zhàn),3天練完,永久白嫖...

編寫各個(gè)模塊的代碼

common/utils.py:封裝請(qǐng)求和斷言等公共函數(shù)。


import requests
import json
def send_request(method, url, headers=None, params=None, data=None):
    response = requests.request(method, url, headers=headers, params=params, data=data)
    response.raise_for_status()  # 如果響應(yīng)狀態(tài)不是200,拋出異常
    return response.json()
def assert_response(response_data, expected_key, expected_value):
    assert expected_key in response_data, f"Expected key '{expected_key}' not found in response."
    assert response_data[expected_key] == expected_value, f"Expected value for '{expected_key}' is '{expected_value}', but got '{response_data[expected_key]}'"

conf/config.py:配置測(cè)試環(huán)境和基礎(chǔ)URL。

TEST_ENVIRONMENT = "development"
BASE_URL = "http://localhost:8000/api/"
test_case/test_login.py:編寫登錄接口測(cè)試用例。
import json
from project.common.utils import send_request, assert_response
from project.conf.config import BASE_URL
class TestLogin:
    def test_successful_login(self):
        url = f"{BASE_URL}login"
        data = {
            "username": "test_user",
            "password": "test_password"
        }
        response_data = send_request("POST", url, data=json.dumps(data))
        assert_response(response_data, "status", "success")
        assert_response(response_data, "message", "Logged in successfully.")
    def test_invalid_credentials(self):
        url = f"{BASE_URL}login"
        data = {
            "username": "invalid_user",
            "password": "invalid_password"
        }
        response_data = send_request("POST", url, data=json.dumps(data))
        assert_response(response_data, "status", "error")
        assert_response(response_data, "message", "Invalid credentials.")

testsuite.py:組織和運(yùn)行測(cè)試用例。


import pytest
from project.test_case import test_login, test_signup  # 導(dǎo)入其他測(cè)試用例模塊
@pytest.mark.parametrize("test_case_module", [test_login, test_signup])
def test_suite(test_case_module):
    suite = unittest.TestLoader().loadTestsFromModule(test_case_module)
    runner = unittest.TextTestRunner()
    results = runner.run(suite)
    assert results.wasSuccessful(), "Test suite failed."

??????運(yùn)行測(cè)試套件:

pytest testsuite.py

這個(gè)示例提供了一個(gè)基本的接口自動(dòng)化測(cè)試套件的封裝結(jié)構(gòu)和代碼。你可以根據(jù)實(shí)際項(xiàng)目的需要對(duì)其進(jìn)行擴(kuò)展和修改

添加更復(fù)雜的斷言、錯(cuò)誤處理、測(cè)試數(shù)據(jù)管理、報(bào)告生成等功能

更復(fù)雜的斷言

在common/utils.py中,你可以添加更多的斷言函數(shù)來處理更復(fù)雜的情況。例如,檢查響應(yīng)中的某個(gè)字段是否在預(yù)期的值列表中:

def assert_in_response(response_data, key, expected_values):
    assert key in response_data, f"Expected key '{key}' not found in response."
    assert response_data[key] in expected_values, f"Expected value for '{key}' to be one of {expected_values}, but got '{response_data[key]}'"

錯(cuò)誤處理

在common/utils.py的send_request函數(shù)中,你可以添加更詳細(xì)的錯(cuò)誤處理邏輯,例如捕獲和記錄不同類型的HTTP錯(cuò)誤:

def send_request(method, url, headers=None, params=None, data=None):
    try:
        response = requests.request(method, url, headers=headers, params=params, data=data)
        response.raise_for_status()  # 如果響應(yīng)狀態(tài)不是200,拋出異常
        return response.json()
    except requests.exceptions.HTTPError as http_error:
        logging.error(f"HTTP error occurred: {http_error}")
        raise http_error
    except Exception as e:
        logging.error(f"Unexpected error occurred: {e}")
        raise e

測(cè)試數(shù)據(jù)管理

你可以創(chuàng)建一個(gè)單獨(dú)的模塊或文件來管理測(cè)試數(shù)據(jù)。例如,在data/test_data.py中定義一個(gè)字典,包含所有測(cè)試用例所需的輸入數(shù)據(jù):

LOGIN_TEST_DATA = {
    "valid_credentials": {
        "username": "test_user",
        "password": "test_password"
    },
    "invalid_credentials": {
        "username": "invalid_user",
        "password": "invalid_password"
    }
}

然后在測(cè)試用例中使用這些數(shù)據(jù):

from project.data.test_data import LOGIN_TEST_DATA
class TestLogin:
    def test_successful_login(self):
        url = f"{BASE_URL}login"
        data = LOGIN_TEST_DATA["valid_credentials"]
        response_data = send_request("POST", url, data=json.dumps(data))
        assert_response(response_data, "status", "success")
        assert_response(response_data, "message", "Logged in successfully.")
    def test_invalid_credentials(self):
        url = f"{BASE_URL}login"
        data = LOGIN_TEST_DATA["invalid_credentials"]
        response_data = send_request("POST", url, data=json.dumps(data))
        assert_response(response_data, "status", "error")
        assert_response(response_data, "message", "Invalid credentials.")

報(bào)告生成

你可以使用pytest-html插件來生成HTML格式的測(cè)試報(bào)告。首先安裝插件:


pip install pytest-html

然后在testsuite.py中配置報(bào)告生成:


import pytest
from pytest_html_reporter import attach_extra_css, add_context
from project.test_case import test_login, test_signup  # 導(dǎo)入其他測(cè)試用例模塊
@pytest.mark.parametrize("test_case_module", [test_login, test_signup])
def test_suite(test_case_module):
    suite = unittest.TestLoader().loadTestsFromModule(test_case_module)
    runner = unittest.TextTestRunner()
    results = runner.run(suite)
    assert results.wasSuccessful(), "Test suite failed."
if __name__ == "__main__":
    pytest.main(["--html=report/report.html", "--self-contained-html"])
    attach_extra_css("custom.css")  # 添加自定義CSS樣式
    add_context({"project_name": "My API Test Project"})  # 添加上下文信息

運(yùn)行測(cè)試套件時(shí),將會(huì)生成一個(gè)名為report.html的測(cè)試報(bào)告。文章來源地址http://www.zghlxwxcb.cn/news/detail-774910.html

到了這里,關(guān)于接口自動(dòng)化測(cè)試套件封裝示例的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 自動(dòng)化測(cè)試實(shí)戰(zhàn)篇(8),jmeter并發(fā)測(cè)試登錄接口,模擬從100到1000個(gè)用戶同時(shí)登錄測(cè)試服務(wù)器壓力

    自動(dòng)化測(cè)試實(shí)戰(zhàn)篇(8),jmeter并發(fā)測(cè)試登錄接口,模擬從100到1000個(gè)用戶同時(shí)登錄測(cè)試服務(wù)器壓力

    進(jìn)程是資源分配最小單位,線程是程序執(zhí)行的最小單位; 每個(gè)進(jìn)程內(nèi)部會(huì)有N個(gè)線程,但至少要有1個(gè)線 程。 比如公司就是一個(gè)進(jìn)程,公司的員工就是線程。 線程占用的資源要?進(jìn)程少很多。 線程之間通信比進(jìn)程更方便 并發(fā)是指在一個(gè)時(shí)間段內(nèi)有多個(gè)進(jìn)程在執(zhí)行 并行指的是

    2024年02月16日
    瀏覽(24)
  • 如何使用apifox打包測(cè)試用例生成測(cè)試套件自動(dòng)化執(zhí)行

    如何使用apifox打包測(cè)試用例生成測(cè)試套件自動(dòng)化執(zhí)行

    1、首先點(diǎn)擊自動(dòng)化測(cè)試--創(chuàng)建測(cè)試用例--新建分組(整理每個(gè)模塊對(duì)應(yīng)的測(cè)試用例),右鍵點(diǎn)擊對(duì)應(yīng)的分組新建測(cè)試用例,開始創(chuàng)建測(cè)試用例。 2、創(chuàng)建測(cè)試用例:輸入對(duì)應(yīng)的名稱,以及用例執(zhí)行的優(yōu)先級(jí)(核心、高、中、低),添加對(duì)應(yīng)的用例備注(說明) ?3、編輯測(cè)試用

    2024年02月11日
    瀏覽(17)
  • 自動(dòng)化測(cè)試、壓力測(cè)試、持續(xù)集成

    自動(dòng)化測(cè)試、壓力測(cè)試、持續(xù)集成

    因?yàn)轫?xiàng)目的原因,前段時(shí)間研究并使用了?SoapUI?測(cè)試工具進(jìn)行自測(cè)開發(fā)的 api。下面將研究的成果展示給大家,希望對(duì)需要的人有所幫助。 SoapUI 是一個(gè)開源測(cè)試工具,通過 soap/http 來檢查、調(diào)用、實(shí)現(xiàn) Web Service 的功能/負(fù)載/符合性測(cè)試。該工具既可作為一個(gè)單獨(dú)的測(cè)試軟件使

    2024年02月04日
    瀏覽(34)
  • SoapUI實(shí)踐:自動(dòng)化測(cè)試、壓力測(cè)試、持續(xù)集成

    SoapUI實(shí)踐:自動(dòng)化測(cè)試、壓力測(cè)試、持續(xù)集成

    因?yàn)轫?xiàng)目的原因,前段時(shí)間研究并使用了?SoapUI?測(cè)試工具進(jìn)行自測(cè)開發(fā)的 api。下面將研究的成果展示給大家,希望對(duì)需要的人有所幫助。 SoapUI 是一個(gè)開源測(cè)試工具,通過 soap/http 來檢查、調(diào)用、實(shí)現(xiàn) Web Service 的功能/負(fù)載/符合性測(cè)試。該工具既可作為一個(gè)單獨(dú)的測(cè)試軟件使

    2024年02月05日
    瀏覽(33)
  • JMeter自動(dòng)化壓力測(cè)試-http

    JMeter自動(dòng)化壓力測(cè)試-http

    下載: Apache JMeter - Download Apache JMeter https://jmeter.apache.org/download_jmeter.cgi 安裝: JDK 版本要求為 1.8。 1.1、Jmeter 有什么樣功能 Apache JMeter 是一個(gè)開源、純 Java、優(yōu)秀的性能測(cè)試工具 能夠測(cè)試許多不同的應(yīng)用程序/服務(wù)器/協(xié)議類型: HTTP、HTTPS REST、SOAP JDBC FTP LDAP JMS 消息類 郵件類

    2024年02月03日
    瀏覽(31)
  • Python接口自動(dòng)化之request請(qǐng)求封裝

    Python接口自動(dòng)化之request請(qǐng)求封裝

    我們?cè)谧鲎詣?dòng)化測(cè)試的時(shí)候,大家都是希望自己寫的代碼越簡(jiǎn)潔越好,代碼重復(fù)量越少越好。那么,我們可以考慮將request的請(qǐng)求類型(如:Get、Post、Delect請(qǐng)求)都封裝起來。這樣,我們?cè)诰帉懹美臅r(shí)候就可以直接進(jìn)行請(qǐng)求了。 我們先來看一下Get、Post、Delect等請(qǐng)求的源碼,

    2024年02月13日
    瀏覽(22)
  • Python接口自動(dòng)化搭建過程,含request請(qǐng)求封裝

    Python接口自動(dòng)化搭建過程,含request請(qǐng)求封裝

    接口測(cè)試自動(dòng)化好處 顯而易見的好處就是解放雙手??。 可以在短時(shí)間內(nèi)自動(dòng)執(zhí)行大量的測(cè)試用例 通過參數(shù)化和數(shù)據(jù)驅(qū)動(dòng)的方式進(jìn)行測(cè)試數(shù)據(jù)的變化,提高測(cè)試覆蓋范圍 快速反饋測(cè)試執(zhí)行結(jié)果和報(bào)告 支持持續(xù)集成和持續(xù)交付的流程 使用Requests+pytest+allure搭建測(cè)試框架的目的

    2024年02月07日
    瀏覽(31)
  • Python接口自動(dòng)化 ? Request庫(kù)詳解和框架封裝

    Python接口自動(dòng)化 ? Request庫(kù)詳解和框架封裝

    從招聘需求我們不難看出目前市面上對(duì)軟件測(cè)試人員的要求: 綜合型的測(cè)試人才、側(cè)重業(yè)務(wù)能力 代碼能力(在自動(dòng)化框架這一塊有一定的建樹) 開發(fā)思維(代碼的封裝能力) 而接口測(cè)試或者接口自動(dòng)化是每一個(gè)面試環(huán)節(jié)都必問的,比如: 主流接口測(cè)試工具 Postman+Newman+Jen

    2023年04月21日
    瀏覽(25)
  • 【接口自動(dòng)化測(cè)試入門】從0到1落地接口自動(dòng)化測(cè)試

    前段時(shí)間寫了一系列自動(dòng)化測(cè)試相關(guān)的文章,當(dāng)然更多的是方法和解決問題的思路角度去闡述我的一些觀點(diǎn)。這篇文章來聊聊新手如何從零到一落地實(shí)踐接口自動(dòng)化測(cè)試。 早些時(shí)候,軟件研發(fā)交付流程大多遵循V型或W型的瀑布模式,這種模式下只有開發(fā)編碼完成才會(huì)提測(cè)進(jìn)入

    2024年02月04日
    瀏覽(27)
  • 接口自動(dòng)化測(cè)試實(shí)踐指導(dǎo)(下):接口自動(dòng)化測(cè)試斷言設(shè)置思路

    接口自動(dòng)化測(cè)試實(shí)踐指導(dǎo)(下):接口自動(dòng)化測(cè)試斷言設(shè)置思路

    作者 : 石臻臻 , CSDN博客之星Top5 、 Kafka Contributor 、 nacos Contributor 、 華為云 MVP , 騰訊云TVP , 滴滴Kafka技術(shù)專家 、 KnowStreaming 。 KnowStreaming 是滴滴開源的Kafka運(yùn)維管控平臺(tái), 有興趣一起參與參與開發(fā)的同學(xué),但是怕自己能力不夠的同學(xué),可以聯(lián)系我,當(dāng)你導(dǎo)師帶你參與開源! 。 在

    2024年01月18日
    瀏覽(30)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包