網站首頁 編程語言 正文
Unittest是Python標準庫中自帶的單元測試框架,Unittest有時候也被稱為PyUnit,就像JUnit是Java語言的標準單元測試框架一樣,Unittest則是Python語言的標準單元測試框架。
Pytest是Python的另一個第三方單元測試庫。它的目的是讓單元測試變得更容易,并且也能擴展到支持應用層面復雜的功能測試。
兩者對比:
Pytest項目實戰:
第一步、搭建項目框架(創建Gwyc_Api_Script_Pytest項目目錄)
依次創建子目錄如下:base:存放一些最底層的方法封裝,協議,請求發送等。common:存放一些公共方法。config:存放配置文件。data:存放測試數據。?log:存放日志。report:存放報告。tests:存放用例。utils:存放公共類。 readme:用于說明文檔。requirements.txt: 用于記錄所有依賴包極其版本號,便于環境部署,可以通過pip命令自動生成和安裝。
第二步、封裝請求方法(base目錄下面創建method.py)
封裝有兩種方法:
第一種:直接調用requests庫下面的request方法,并將所有需要用到的參數定義進去,分為實參和行參,實參調用必須要傳參,行參可給默認值,調用時可重新賦值也可以使用默認值。這種方法代碼量少,不用做判斷,request會自動根據傳入的參數進行發送請求到服務器。
第二種:分別對各個請求方式按函數的形式封裝,分別調用requests進行發送請求。以get和post為例:put,delete請求按一樣方法封裝,各個請求方式封裝完成以后再定義一個主方法,直接調用主方法會自動根據請求方式進行判斷調用各個請求函數,這里也可以不對請求方式匯總封裝,直接調用各個函數進行發送請求也是可以的。這種方法封裝涉及代碼量較多,也沒有能夠很好的用上requests庫,因此推薦使用第一種方法。
第三步、封裝讀取文件的方法(common目錄下創建public.py):
1、這里需要用到python的os庫,os 庫是Python標準庫,包含幾百個函數,常用的有路徑操作、進程管理、環境參數等。
2、分別對獲取目錄和獲取目錄下文件進行了封裝,直接調用并傳入相應的參數即可使用。如下圖:
第四步、準備數據(data目錄下創建data.xlsx)
將接口寫入excel表,將接口需要用到的字段都寫進excel然后直接進行讀取。
第五步、封裝讀取文件方法(utils目錄下面創建operationExcel.py)
定義一個文件類分別再定義一個方法獲取Sheet表,定義一個方法獲取出所有數據存放進列表。
第六步、封裝登錄方法(common目錄下面創建login.py)
獲取token提供給接口使用,使用@pytest.fixture裝飾器每次執行所有用例前執行一遍登錄方法獲取到token并返回。
第七步、對表頭定義全局變量,可以定義在utils目錄下面的operationExcel.py文件中
第八步、封裝用例(tests目錄下面創建test_gwyc_api_all.py)
需要用到@pytest.mark.parametrize()裝飾器進行封裝用例,調用getExceldatas()將讀取出來的用例存放進裝飾器,"data"為別名。如下圖,分別請求頭和參數做了為空判斷,并將token插入到headers里面,這樣每一個接口都能使用到登錄返回的token,不用每次都去調用獲取token。
第九步、利用allure生成測試報告。
allure是Pytest的插件包需要下載安裝,并將allure里面的bin目錄所在的路徑配置到PATH環境變量中就可以直接使用報告。
將生成的json文件存放到用例所在的目錄下面執行完成以后會在tests目錄下面生成一個report目錄,下面包含result目錄和html目錄,前者是存放json文件,后者存放讀取后生成的html報告
第十步、封裝日志方法(log目錄下面創建log.py)
日志在自動化測試中起到的參考作用相對較小以測試報告為準,直接按相應規則配置好直接調用即可。
原文鏈接:https://blog.csdn.net/myh919/article/details/129124115
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-10-25 Python條件語句的使用_python
- 2023-07-14 431報錯和解決方法
- 2022-02-26 小程序使用AntV F2自定義圖表和legend交互
- 2022-07-03 C#入門之定義類成員與接口實現_C#教程
- 2023-02-10 docker的鏡像存放地址在哪里_docker
- 2022-12-25 React安裝node-sass失敗解決方案分享_React
- 2022-07-30 Go語言sort包函數使用示例_Golang
- 2022-10-04 Android實現圓圈倒計時_Android
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支