自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談Python+requests+pytest接口自動化測試框架的搭建

原創(chuàng) 精選
開發(fā) 后端 測試
框架的設(shè)計(jì)思路是首先要明確進(jìn)行接口自動化需要的步驟,然后逐步拆解需要完成的工作,快來看看吧!

框架的設(shè)計(jì)思路

首先要明確進(jìn)行接口自動化需要的步驟,如下圖所示:

圖片

然后逐步拆解需要完成的工作:

1)了解分析需求:了解接口要實(shí)現(xiàn)的功能

2)數(shù)據(jù)準(zhǔn)備:根據(jù)開發(fā)文檔確定接口的基本情況,知曉接口的url、請求方式、入?yún)⒌刃畔?,然后根?jù)業(yè)務(wù)邏輯以及入?yún)眍A(yù)期接口的輸出

  • 需要有一個(gè)配置文件來存儲接口的一些基本信息;
  • 需要有一個(gè)方法能讀取配置文件;
  • 需要有一個(gè)excel或者yaml格式文件來存儲測試數(shù)據(jù);
  • 需要有一個(gè)方法能讀取測試數(shù)據(jù);
  • 需要有一個(gè)方法來把讀取到的配置文件和測試數(shù)據(jù)組裝成測試執(zhí)行時(shí)需要的參數(shù)化數(shù)據(jù);

如果預(yù)期結(jié)果是需要根據(jù)入?yún)⒉閿?shù)據(jù)庫來得到的時(shí)候還需要一個(gè)能執(zhí)行sql的方法

3)設(shè)計(jì)&執(zhí)行測試:生成一個(gè)測試文件,可以來根據(jù)入?yún)⒄{(diào)用接口獲得接口輸出然后驗(yàn)證

  • 根據(jù)pytest的特性可以把準(zhǔn)備參數(shù)化的數(shù)據(jù)的工作放到conftest.py下;
  • 需要有一個(gè)調(diào)用接口以及斷言驗(yàn)證的測試文件,命名規(guī)則為xxx_test.py或者test_xxx.py;
  • 為了更好的對輸出和預(yù)期輸出做驗(yàn)證準(zhǔn)備封裝一下系統(tǒng)自帶的斷言;
  • 為了能更好執(zhí)行測試封裝一下requests模塊,制定統(tǒng)一的輸入輸出標(biāo)準(zhǔn);
  • 記錄執(zhí)行錯(cuò)誤信息引入日志記錄模塊;

4)查看結(jié)果:根據(jù)斷言結(jié)果來判定接口是否滿足需求框架最終的執(zhí)行順序如下圖所示

圖片

框架的基本結(jié)構(gòu)

圖片

然后介紹一個(gè)每個(gè)目錄下都有什么,分別完成什么工作

1、這里每一個(gè)文件對應(yīng)一個(gè)接口所需要的測試數(shù)據(jù),命名規(guī)則為nameA.xlsx或者nameA.yaml(nameA泛指待測接口名稱),文件里面可以存放調(diào)用接口所需的參數(shù)name、參數(shù)value、所需cookie、預(yù)期輸出結(jié)果

圖片


2、assertion.py 

--封裝的斷言方法,用于驗(yàn)證接口返回值和預(yù)期結(jié)果是否一致    

config.py

--封裝讀取配置文件的方法    

get_caseparams.py

--把測試數(shù)據(jù)加工成接口所需要的格式     

log.py

--封裝的記錄日志的方法    

request.py

--封裝的https請求方法,主要是post和get    

selectDB.py

--查詢sql并把結(jié)果加工成[dic1,dic2,dic3....]這種格式,每個(gè)dic是一條數(shù)據(jù)       

testcasetemplate.py

--這個(gè)是根據(jù)caseparams文件夾下的測試數(shù)據(jù)自動在testcase文件夾下生成測試文件的腳本

圖片


3、里面存放兩個(gè)配置文件,base.ini存放數(shù)據(jù)庫連接的配置interface.ini是所有測試接口需要的配置。

圖片


4、記錄測試的日志文件,沒啥可說的,log.log是當(dāng)天文件,其他的是對應(yīng)日期下的歷史日志。

圖片


5、conftest.py固定名稱的一個(gè)文件,放在被測接口腳本同一個(gè)文件夾下,此處的作用是為每個(gè)被測腳本提供參數(shù)化支持 test_XXX.py這種文件是接口的測試文件,XXX為被測接口的名稱。

圖片      

6、run.py   ---測試執(zhí)行的主入口,如果把該接口自動化測試框架放到j(luò)enkins上做持續(xù)集成的時(shí)候,可以通過配置jenkins來代替這個(gè)入口。

使用說明

當(dāng)我們需要有一個(gè)接口(假定名稱為abc)需要用本框架進(jìn)行自動化測試的時(shí)候,操作步驟如下:

1、interface.ini文件下添加名稱為abc的節(jié)點(diǎn),然后在該節(jié)點(diǎn)下配置好接口的參數(shù)文件格式、http請求方式、接口url、接口wiki。

2、casefparams文件夾下創(chuàng)建名稱為abc.xlsx的用例數(shù)據(jù)文件。

3、執(zhí)行common文件夾下的testcasetemplate.py,執(zhí)行的結(jié)果是會自動根據(jù)前兩步配置的內(nèi)容在casefile文件夾下生成test_abc.py的腳本文件。

4、編輯test_abc.py添加所需要的斷言,來驗(yàn)證接口的準(zhǔn)確性。

5、執(zhí)行run.py完成測試。

測試執(zhí)行詳情為run.py指定要執(zhí)行測試的測試文件的路徑testcase目錄,根據(jù)pytest的運(yùn)行機(jī)制這之前會先調(diào)用testcase目錄下的conftest.py,這個(gè)文件在此處的作用就是通過遍歷testcase目錄下以test_為開頭的測試文件,然后調(diào)用讀取配置文件config.py、讀取并組裝參數(shù)的get_caseparams.py將測試用例數(shù)據(jù)參數(shù)化傳遞給test_開頭的測試文件,test_開頭的測試文件執(zhí)行的時(shí)候會把之前步驟傳遞過來的參數(shù)拆分,然后調(diào)用request.py發(fā)送http請求,獲得接口的json格式的返回結(jié)果,然后通過以下方式對接口返回結(jié)果做驗(yàn)證。

1)根據(jù)產(chǎn)品業(yè)務(wù)邏輯知道入?yún)⒌那闆r下很簡單就能得出預(yù)期結(jié)果的時(shí)候,可以直接把預(yù)期結(jié)果放到和入?yún)⒁黄鸬膃xcel或者yaml測試數(shù)據(jù)文件中,在執(zhí)行測試的時(shí)候這些參數(shù)也會一并傳遞給測試文件,直接取出來和接口輸出做驗(yàn)證即可。

2)需要查庫驗(yàn)證的情況需要把需要把接口的入?yún)⒆鳛閟ql的條件寫好sql后調(diào)用selectDB.py得到查詢結(jié)果再拿sql返回的結(jié)果和接口輸出做驗(yàn)證3)還有一些復(fù)雜的場景可能會根據(jù)接口入?yún)?,根?jù)業(yè)務(wù)邏輯自己寫腳本去獲得預(yù)期結(jié)果,然后和接口輸出做驗(yàn)證。

責(zé)任編輯:龐桂玉 來源: 之家技術(shù)
相關(guān)推薦

2023-09-02 20:22:42

自動化測試軟件開發(fā)

2023-09-13 11:40:12

2022-08-14 16:11:23

Python自動化測試數(shù)據(jù)

2012-03-29 10:57:12

Web自動化測試

2011-05-31 17:35:45

測試自動化QTP

2019-04-22 09:00:00

Python框架自動化測試

2009-08-19 09:00:48

單元測試框架自動化測試

2018-05-11 08:29:10

Python自動化測試數(shù)據(jù)驅(qū)動

2020-04-28 09:00:00

測試測試自動化

2021-06-26 07:40:21

前端自動化測試Jest

2018-05-11 13:39:05

PythonCSV接口測試

2017-12-24 21:00:10

自動化測試測試框架敏捷

2023-05-18 14:01:00

前端自動化測試

2023-02-11 21:14:58

自動化測試框架

2011-06-08 17:15:46

QTP腳本

2023-09-14 15:37:11

2013-03-13 11:34:05

自動化測試Selenium.Net測試

2022-12-26 12:30:28

接口測試

2021-08-17 09:00:00

架構(gòu)PythonWeb

2020-09-14 07:00:00

測試自動化框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號