【接口自動化_06課_Pytest+Excel+Allure完整框架集成】

一、logging在接口自動化里的應用

1、設置日志的配置,并收集日志文件

日志的設置需要在pytest.ini文件里設置。這個里面盡量不要有中文

2、debug日志的打印

pytest.ini文件的開關一定得是true才能在控制臺打印日志


import allure
import pytest
from P06_PytestFrame.api_keyword.api_key import ApiKey
import logging@allure.title("DS01-通過用戶名可以正確登錄")
def test_login():# 1. 最重要的日志打印logging.basicConfig(level=logging.DEBUG)logging.error("執行用例:DS01-通過用戶名可以正確登錄")url = "http://shop-xo.hctestedu.com/index.php?s=/api/user/login"params = {"application": "app", "application_client_type": "weixin"}data = {"accounts": "hami", "pwd": "123456", "type": "username"}ak = ApiKey()# 2. 發送請求res = ak.post(url=url, params=params, data=data)print(f"響應結果是:{res.json()}")# 3.斷言sj_res = ak.get_text(res.json(), "$.msg")qw_res = "登錄成功1"assert sj_res == qw_res, "結果不一致"

?控制臺運行結果

日志收集文件里的存儲結果

3、鉤子函數

鉤子函數放在conftest.py文件里

pytest官網:pytest: helps you write better programs - pytest documentation

return永遠不執行后面的

迭代器會往復執行

二、所有接口的區別?

接口四要素不同--數據提取出來--就是數據驅動(DDT)

"數據驅動測試"(Data-Driven Testing,簡稱DDT)是一種軟件測試方法,使用不同的數據集來驅動測試用例的執行。通過將測試數據與測試邏輯分離,DDT可以提高測試覆蓋率、增強測試代碼的可維護性,并減少重復代碼。

1、數據格式

把所有的數據進行提取 - DDT(數據驅動)格式:
單元素:每次拿一個數據(有多少個就多少次)
()--元組,無序
[] --列表 ,有序
{}--字典 , 有序(python3.7開始字典有序,之前的無序)嵌套元素:每次拿一組數據,要取其中的值(可以通過下標去獲取)
([],[])--元組里套列表 
[(),()]  --列表里套元組,因為元組無序,所以這個不能通過下標獲取
[{},{}]  --列表套字典- 用的最多的一種格式 方法:--裝飾器
@pytest.mark.parametrize("變量名",數據源)在運行過程當中,數據源有多少個就會執行多少次

1)單元素數據驅動

data1 = ("hami", "xiaomi", "sanfeng")? 元組類型

獲取元素的坐標結果

2)嵌套元素數據--列表里套元組

data2 = [("hami","123456"),("xiaomi","111111"),("sanfeng","22222")]

通過下標獲取其一數據

?3)嵌套元素數據--列表里套字典

data3 = [{"name": "hami", "password": "123456"}, {"name": "xiaomi", "password":"11111"},{"name": "sanfeng", "password": "222222"}]

三、接口自動化用例模板的編寫

要求:

1、編號和行號一致

?

2、 標黃色都是必填

3、請求數據的參數類型

data是表單形式提交,Json是請求頭是json的去提交,files是上傳文件的接口需要使用

4、斷言的字段

5、程序執行完,自動回寫的數據

四、讀取文件的程序-FileDataDriver.py

用來讀取和寫入excel \ yaml文件。

利用數據驅動,把excel文件讀取成功

五、config.py

用來存放常用的變量(文件路徑、讀取的sheet頁),其中,常量要大寫

要從文件的根目錄的下一級開始讀取文件,所以,config.py文件要在文件的根目錄的下一級

如圖,是day06.P06_PytestFrame

自己的代碼-根目錄是day06,下一級是P06_PytestFrame

?

下載指令:pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple

六、data的路徑

下面這些文件是在同一級目錄里

?

如果是基于上一層目錄下的一層(在二級目錄里),則是../

如果只是處于同級目錄,是./

七、核心執行器--testcase

拿到數據,進行解析,發送請求

1、反射

class ApiKey:name = "hami"def get(self):print("這是get方法")def post(self, url, data):print("這是post方法")print("url", url)print("data", data)return "ok"# 反射:通過[類(實例化對象)和方法名]找到對應的方法
# 反射的語法:getattr(實例化對象, 方法名/屬性名)**參數 ,返回值:方法本體ak = ApiKey()
method = "post"
method_fun = getattr(ak, method)#(類,方法)
method_fun(url="1111",data="2222")

tips:

# eval() # 把字符串 轉成[有效的表達式]
#
# a = "1+2"
# print(eval(a)) #3# data = "{'name':'hami'}"
# print(type(eval(data))) #dict

?2、斷言

拿到響應數據,和預期數據,斷言比較?

?3、動態生成標題:

使用固定的方法,動態生成標題?

?

然后生成的標題

?

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

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

相關文章

CUDA cuDNN和pytorch(GPU版)的完整安裝教程

? * 說明: 本教程使用wsl-ubuntu20.04, 其他發行版linux的命令可能有所區別. *實測機型: i5-13500HX | RTX 4060 Laptop 一、下載CUDA12.X版本 這里以下載CUDA12.2為例。 前往cuda-12.2下載頁, 按照如圖方式選擇合適的選項: 按照官方給出的命令, 在b…

Trie樹的應用

Trie樹的應用 題目解題思路代碼 題目 維護一個字符串集合,支持兩種操作: I x 向集合中插入一個字符串 x x x;Q x 詢問一個字符串在集合中出現了多少次。 共有 N N N 個操作,所有輸入的字符串總長度不超過 1 0 5 10^5 105&am…

ArkTS學習筆記_封裝復用之@builderParam裝飾器

ArkTS學習筆記_封裝復用之builderParam裝飾器 作用: 在自定義組件中,該裝飾器用于裝飾函數成員變量,builderParam裝飾的函數成員變量的值必須是經過builder裝飾的方法。變量初始化后可以在自定義組件內調用。初始化: 可以使用自定…

移動應用性能關注分析哪些指標

移動應用常見性能指標 要對應用開展性能測試,首先需要了解需要重點關注哪些指標?指標的參考范圍大致是多少?可采用哪些工具收集這些指標?如何收集?如果指標有異常,大致有哪些high level的優化思路。這篇博客…

說一下GET請求和POST請求的區別

面試官常常會問到的一個問題就是:GET請求和POST請求的區別。因為一個看似簡單的問題就能考察出面試者對網絡協議和通信的掌握程度以及對前后端開發基礎知識是否了解、安全性意識是否足夠強,以及綜合分析與總結能力等。 所以答的好可以讓面試官對你刮目相…

YoloV8改進策略:卷積篇|Kan行天下之GRAM,KAN遇見Gram多項式V2版本

GRAM(GRAM可能是一個新提出的模型或方法的縮寫,這里我們根據上下文進行解釋)受到諸如TorchKAN和ChebyKAN等Kolmogorov-Arnold網絡(KAN)替代方案的啟發。GRAM引入了一種簡化的KAN模型,但同時利用了Gram多項式變換的簡單性。它與其他替代方案的不同之處在于其獨特的離散性特…

Vue3 使用emoji表情包 emoji-mart-vue-fast

文檔&#xff1a;emoji-mart-vue-fast - npm (npmjs.com) 非常簡單 代碼直接照抄即可 1. 引入 pnpm install emoji-mart-vue-fast 2. 使用 <template><Picker:data"emojiIndex":emojiSize"18":showPreview"false":infiniteScroll&quo…

【07】分布式事務解決方案

1、事務簡介 事務(Transaction)是訪問并可能更新數據庫中各種數據項的一個程序執行單元(unit)。在關系數據庫中&#xff0c;一個事務由一組SQL語句組成。事務應該具有ACID四個特性&#xff1a;原子性、一致性、隔離性、持久性。任何事務機制在實現時&#xff0c;都應該考慮事務…

J025_斗地主游戲案例開發(簡版)

一、需求描述 完成斗地主游戲的案例開發。 業務&#xff1a;總共有54張牌&#xff1b; 點數&#xff1a;3、4、5、6、7、8、9、10、J、Q、K、A、2 花色&#xff1a;黑桃、紅桃、方片、梅花 大小王&#xff1a;大王、小王 點數分別要組合4種花色&#xff0c;大小王各一張。…

[激光原理與應用-114]:南京科耐激光-激光焊接-焊中檢測-智能制程監測系統IPM介紹 - 18 - 產品宣傳、介紹、產品價值、幫助客戶解決的問題

目錄 一、第一印象 1.1 我是誰&#xff1f;產品是什么&#xff1f;產品在產業鏈中的位置 1.2 公司在產業鏈中的位置&#xff1f;公司簡介&#xff1f; 二、IPM工作原理 2.1 IPM系統組成 2.2 基于激光熔池光學檢測原理 2.3 基于信號特征的檢測原理 三、IPM產品如何與客…

2-17,18,19 -- 關于指針

指針(pointer 聲明指針 int *p;定義指針 int a 4; int *p &a; //指針p是指向變量a的地址的指針指針數組 int *arr[5];數組指針 int (*arr)[5];函數指針 int (*fun)(int,int) // 聲明一個指向函數的指針,這個函數的返回值是int,有兩個int的參數指針的指針 int **p;…

ArkTS學習筆記_封裝復用之@Styles裝飾器

ArkTS學習筆記_封裝復用之Styles裝飾器 背景&#xff1a; 在開發中&#xff0c;如果每個組件的樣式都需要單獨設置&#xff0c;就會出現大量代碼在進行重復樣式設置&#xff0c;雖然可以復制粘貼&#xff0c;但為了代碼簡潔性和后續方便維護&#xff0c;給出的思路是&#xff…

jmeter分布式(四)

一、gui jmeter的gui主要用來調試腳本 1、先gui創建腳本 先做一個腳本 演示&#xff1a;如何做混合場景的腳本&#xff1f; 用211的業務比例 ①啟動數據庫服務 數據庫服務&#xff1a;包括mysql、redis mysql端口默認3306 netstat -lntp | grep 3306處于監聽狀態&#xf…

深入了解MySQL中的innodb_lock_wait_timeout

引言 在數據庫管理中&#xff0c;確保數據的一致性和完整性是至關重要的。MySQL的InnoDB存儲引擎通過行級鎖定機制來實現這一點。然而&#xff0c;當多個事務同時操作數據庫時&#xff0c;可能會出現鎖等待的情況。了解并合理配置innodb_lock_wait_timeout參數&#xff0c;對于…

數據庫第6次作業

內容 1、創建視圖v_emp_dept_id_1&#xff0c;查詢銷售部門的員工姓名和家庭住址 2、創建視圖v_emp_dept&#xff0c;查詢銷售部門員工姓名和家庭住址及部門名稱。 3、創建視圖v_dept_emp_count(dept_name,emp_count,avg_salay)&#xff0c;統計每個部門人數并計算平均工資。 …

Spring 使用log4j

porn.xml 引入依賴 <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.23.1</version></dependency><dependency><groupId>org.apache.logging.log4j<…

解讀網傳《深圳IT圈?新解讀八小時工作制》

網傳深圳IT圈的新解讀八小時工作制 工作時間安排&#xff1a; 10:00-12:0014:00-18:0019:00-21:00 初看&#xff1a;有驚喜 上午開始時間晚&#xff1a;相對于傳統的9點開始&#xff0c;這種安排允許員工有更多的早晨時間&#xff0c;可以用來休息或處理個人事務。下午和晚上分…

typescript新規范及vue3常用的屬性解析【2024】

文章目錄 如在vue中 使用tyescript來規范定義類型解釋一下 < >的意思 定義 了 personList &#xff1a;是個數組 Array 且要告訴里面每一項 結構長什么樣 Array<PersonInter>definepropsvue3中的hooks組件父子組件 方法、數據、相互調用 如在vue中 使用tyescript來…

【LSTM和GRU極簡,和最新的TT也就是狀態】機器學習模型來學習狀態

LSTM&#xff08;長短期記憶網絡&#xff09;中的關鍵參數包括輸入門、遺忘門、輸出門、細胞狀態和隱藏狀態。以下是如何進行推理計算的示例&#xff1a; LSTM參數和公式 輸入門&#xff08;i_t&#xff09;&#xff1a;決定輸入的信息量。 遺忘門&#xff08;f_t&#xff0…

【React Native】做了一個簡約的雷達圖組件

本文目錄 【React Native】做了一個簡約的雷達圖組件獲取組件實現思路用法示例簡易用法自定義美化 結語 【React Native】做了一個簡約的雷達圖組件 最近在使用 react-native 中需要繪制雷達圖&#xff0c;沒有找到合適的小組件&#xff08;大的圖表庫未直接提供&#xff0c;需…