自動化測試--利用pytest實現整條業務鏈路測試

?

概述

前面一章講解了單個接口的測試,但是實際項目中,因為權限和登錄狀態的限制,大部分接口沒辦法直接訪問到,這時候我們想訪問到一個系統的接口,就需要模擬用戶登錄拿到用戶的token和所擁有的權限之后再將這些信息作為參數傳遞給下游進行測試

舉個栗子:

base_url : 定義接口的基礎 URL。所有需要這個 URL 的測試函數都可以使用這個 fixture。

@pytest.fixture
def base_url():return "http://localhost:8081"

請求訪問登錄接口:

參數封裝:

@pytest.fixture
def login_payload():return {"username": "admin","password": "123","captcha": "12","uuid": "10f53b80-d83f-4431-8fb2-09280942522a"}

之后請求訪問登錄頁面

@pytest.fixture
def token(base_url, login_payload):response = requests.post(f"{base_url}/user/login", json=login_payload)assert response.status_code == 200data = response.json()assert data["code"] == "200"token = data["data"]["token"]return token

這樣我們就能拿到用戶的token信息
將用戶的請求頭信息按照系統存放的規則存入請求頭中
在這里插入圖片描述


def test_course_page(base_url, token):headers = {"Token": token}params = {"pageNum": 1,"pageSize": 10,"name": "微表情","teacherName": "","courseModule": ""}response = requests.get(f"{base_url}/course/page", headers=headers, params=params)# 打印響應詳細信息print("Status Code:", response.status_code)print("Headers:", response.headers)print("Response Text:", response.text)# 斷言部分assert response.status_code == 200assert response.headers["Content-Type"] == "application/json"data = response.json()# 檢查響應中的具體字段assert data["code"] == "200"assert "msg" in dataassert "data" in datacourse_data = data["data"]assert "total" in course_dataassert "data" in course_dataassert len(course_data["data"]) > 0# 檢查第一個課程的具體字段first_course = course_data["data"][0]assert "id" in first_courseassert "name" in first_courseassert first_course["name"] == "微表情專業課"

全部代碼實例如下:

import requests
import pytest@pytest.fixture
def base_url():return "http://localhost:8081"@pytest.fixture
def login_payload():return {"username": "admin","password": "123","captcha": "12","uuid": "10f53b80-d83f-4431-8fb2-09280942522a"}@pytest.fixture
def token(base_url, login_payload):response = requests.post(f"{base_url}/user/login", json=login_payload)assert response.status_code == 200data = response.json()assert data["code"] == "200"token = data["data"]["token"]return tokendef test_course_page(base_url, token):headers = {"Token": token}params = {"pageNum": 1,"pageSize": 10,"name": "微表情","teacherName": "","courseModule": ""}response = requests.get(f"{base_url}/course/page", headers=headers, params=params)# 打印響應詳細信息print("Status Code:", response.status_code)print("Headers:", response.headers)print("Response Text:", response.text)# 斷言部分assert response.status_code == 200assert response.headers["Content-Type"] == "application/json"data = response.json()# 檢查響應中的具體字段assert data["code"] == "200"assert "msg" in dataassert "data" in datacourse_data = data["data"]assert "total" in course_dataassert "data" in course_dataassert len(course_data["data"]) > 0# 檢查第一個課程的具體字段first_course = course_data["data"][0]assert "id" in first_courseassert "name" in first_courseassert first_course["name"] == "微表情專業課"# 運行測試
if __name__ == "__main__":pytest.main(["-s", "test_course_page.py"])

運行結果:
在這里插入圖片描述
更新參數,模擬登錄失敗的情況
在這里插入圖片描述
類似的我們可以將參數改為可以動態錄入,可以將其定義為函數的參數,并通過函數調用傳遞不同的參數值。這樣可以使測試更加靈活,并且可以輕松地重復執行相同的測試用例以覆蓋不同的情況。
?

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

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

相關文章

vivado2020.2創建hls仿真工程實現led閃爍

下載vivado2020.2后會有這個出現在桌面 點擊進入創建工程,這里注意不要有前面的\我再復制的時候復制錯了導致創建失敗 按f光標就會跳轉到下一個f開頭的函數處,要查找其他函數也同理 生成了一個synthesis summary文件 找到目錄下生成的.v文件 an 點…

Pod進階——資源限制以及探針檢查

目錄 一、資源限制 1、資源限制定義: 2、資源限制request和limit資源約束 3、Pod和容器的資源請求和限制 4、官方文檔示例 5、CPU資源單位 6、內存資源單位 7、資源限制實例 ①編寫yaml資源配置清單 ②釋放內存(node節點,以node01為…

【知識蒸餾】多任務模型 logit-based 知識蒸餾實戰

一、什么是邏輯(logit)知識蒸餾 Feature-based蒸餾原理是知識蒸餾中的一種重要方法,其關鍵在于利用教師模型的隱藏層特征來指導學生模型的學習過程。這種蒸餾方式旨在使學生模型能夠學習到教師模型在特征提取和表示方面的能力,從…

有些錯誤,常犯常新、常新常犯:記錄一個使用element-plus的tooltip組件的錯誤

使用element-plus的tooltip組件&#xff0c;最開始的寫法是這樣的&#xff1a; <el-tooltipclass"box-item"effect"dark"content"tooltip content" ><el-button v-if"isDisabled" :underline"false" type"pr…

持續總結中!2024年面試必問 20 道 Redis面試題(五)

上一篇地址&#xff1a;持續總結中&#xff01;2024年面試必問 20 道 Redis面試題&#xff08;四&#xff09;-CSDN博客 九、Redis的同步機制了解么&#xff1f; Redis 的同步機制是其復制策略的核心部分&#xff0c;確保數據在主節點&#xff08;master&#xff09;和從節點…

【C語言】程序員自我修養之文件操作

【C語言】程序員自我修養之文件操作 &#x1f525;個人主頁&#xff1a;大白的編程日記 &#x1f525;專欄&#xff1a;C語言學習之路 文章目錄 【C語言】程序員自我修養之文件操作前言一.文件介紹1.1為什么使用文件1.2文件分類1.3二進制文件和文本文件 二.文件的打開和關閉2.…

桌面藏線大法

1有線改無線&#xff1a; 藍牙鼠標 藍牙鍵盤 藍牙耳機 2將排插貼到桌子底下 購物軟件上搜 3斷舍離 不要的電子產品統統扔掉 4 洞洞板和掛鉤 這個不用介紹了

爬蟲基本原理及requests庫用法

文章目錄 一、爬蟲基本原理1、什么是爬蟲2、爬蟲的分類3、網址的構成4、爬蟲的基本步驟5、動態【異步】頁面和靜態【同步】頁面6、請求頭 二、requests基本原理及使用1、chrome 抓包按鈕詳解1.1 Elements1.2 元素定位器1.3 Network1.4 All1.5 XHR1.6 Preserve log1.7 手機模式1…

暴雨信息液冷計算解決方案亮相CCIG 2024

5月24日&#xff0c;2024中國圖象圖形大會&#xff08;CCIG&#xff09;在陜西西安正式開幕。作為涵蓋圖像圖形各專業領域的綜合性的全國性學術會議&#xff0c;CCIG面向開放創新、交叉融合的發展趨勢&#xff0c;為圖像圖形相關領域的專家學者和產業界的同仁&#xff0c;搭建了…

Java+Spring+ MySQL + MyCat云HIS有哪些優勢?智慧醫療云(HIS)低成本與安全保障的完美結合

JavaSpring MySQL MyCat云HIS有哪些優勢&#xff1f;智慧醫療云(HIS)低成本與安全保障的完美結合 云HIS的優點包括節省成本、便捷高效、穩妥安全等。通過云HIS&#xff0c;醫療機構無需在本地建立機房、購買服務器和應用軟件&#xff0c;降低了硬件和人力成本。同時&#xff0…

虛擬化介紹

虛擬化介紹 概述概念特點優勢實現手段 虛擬化架構概述寄居虛擬化架構裸金屬虛擬化架構操作系統虛擬化架構混合虛擬化架構幾種虛擬化架構的比較虛擬化架構與虛擬化技術的關系 虛擬化技術分類服務器虛擬化技術分類 存儲虛擬化技術分類網絡虛擬化技術分類 服務器虛擬化技術處理器虛…

開源軟件 | 一文徹底搞懂許可證的定義、起源、分類及八大主流許可證,讓你選型不再頭疼

為什么開源軟件會存在許可證&#xff0c;許可證的起源與產生目的是為了解決什么問題&#xff1f;許可證的定義又是怎樣的&#xff1f;什么是Copyleft&#xff0c;與Copyright有何區別&#xff1f;開源軟件常見的許可證有哪些&#xff1f;這些許可證都有什么特點&#xff1f;接下…

[c++] 小游戲 能量1.0.1 版本 zty出品

大家好 緊急修改&#xff0c;發現判斷游戲是否結束部分有問題&#xff0c;緊急修改bug&#xff0c;對大家造成的不便我深感歉意&#xff0c;對不起 先贊后看 養成習慣 code&#xff1a; #include<bits/stdc.h> #include<windows.h> using namespace std; int rg…

Zabbix實現7x24小時架構監控

上篇&#xff1a;https://blog.csdn.net/Lzcsfg/article/details/138774511 文章目錄 Zabbix功能介紹Zabbix平臺選擇安裝Zabbix監控端部署MySQL數據庫Zabbix參數介紹登錄Zabbix WEBWEB界面概覽修改WEB界面語言添加被控主機導入監控模板主機綁定模板查看主機狀態查看監控數據解…

6.封裝讀寫游戲數據的功能

前置知識&#xff1a;5.模仿CheatEngine實現鎖血無敵功能&#xff08;封裝它的代碼&#xff09; 封裝功能.cpp文件 #include "封裝功能.h"GAMECheat::GAMECheat(unsigned pid, unsigned _baseAdr, unsigned _readTime) {readTime _readTime;baseAdr _baseAdr;hPr…

代碼隨想錄算法訓練營第三十四天 | 理論基礎、455.分發餅干、376、擺動序列、53.最大子序和

目錄 理論基礎 455.分發餅干 思路 代碼 376.擺動序列 思路 代碼 53.最大子序和 思路 代碼 理論基礎 代碼隨想錄 455.分發餅干 代碼隨想錄 思路 可以是大餅干優先滿足大胃口&#xff0c;也可以是小餅干優先滿足小胃口。 代碼 class Solution:def findContentChildre…

ArkUI-X開發指南:【SDK配置和構建說明】

ArkUI-X SDK配置和構建說明 ArkUI-X SDK是ArkUI-X開源項目的編譯產物&#xff0c;可將ArkUI-X SDK集成到現有Android和iOS應用工程中&#xff0c;使開發者基于一套ArkTS主代碼&#xff0c;就可以構建支持多平臺的精美、高性能應用。SDK內容包含ArkUI跨平臺運行時&#xff0c;組…

安裝SSL證書能提高網站訪客嗎?

在當今互聯網時代&#xff0c;網站的安全性和用戶體驗至關重要。隨著網絡攻擊和數據泄露事件的不斷增加&#xff0c;用戶對網站的信任也變得越來越重要。SSL證書是一種數字證書&#xff0c;可以在Web服務器和網頁瀏覽器之間建立加密鏈接&#xff0c;確保網站傳輸的數據安全&…

【HarmonyOS嘗鮮課】- 前言

面向人群 本課程適用于HarmonyOS應用開發的初學者。 有無經驗的開發者都可以輕松掌握ArkTS語言聲明式開發范式&#xff0c;體驗更簡潔、更友好的HarmonyOS應用開發旅程。 什么是HarmonyOS HarmonyOS&#xff08;鴻蒙操作系統&#xff09;是由華為技術有限公司開發的全場景分…

B站自動回復插件_無需千粉,輕松適配引流拉新資源分享

項目介紹 B站關鍵詞自動回復插件&#xff0c;無需千粉&#xff0c; 很適合做流量做引流做私欲的朋友&#xff0c; 前期沒有千粉是無法開啟官方自動回復的&#xff0c; 適當的情況下可以用這個插件頂一下&#xff0c; 三聯好評領取資源的打法真的超級漲粉&#xff0c; 感謝插件…