接口自動化知識與設(shè)計

一. 接口自動化測試

1. 自動化測試的流程:

test環(huán)境:研發(fā)在向test環(huán)境代碼倉庫push代碼后,自動的觸發(fā)jenkins任務(wù),構(gòu)建接口自動化測試,并主動發(fā)送錯誤的構(gòu)建郵件

beta環(huán)境:周三上beta后,手動觸發(fā)beta環(huán)境的自動化測試

線上環(huán)境:周四上線后,手動觸發(fā)線上環(huán)境的自動化測試

2. 使用流程設(shè)計

目前有3個環(huán)境:test/beta/release,每個環(huán)境有2個版本的代碼: pro/latest,所以需要維護(hù)3套環(huán)境的測試用例,并使用特殊的請求頭,區(qū)分請求到哪個版本(pro/latest)代碼中

test環(huán)境,測試用例的管理基于excel,自動化測試框架搭建好后,基本上都是在維護(hù)一份excel的測試用例,對測試用例進(jìn)行新增,修改,代碼改動較少,后期維護(hù)成本低

二. 接口自動化測試設(shè)計

1. 基于python的單元測試框架:unittest、pytest

unittest和pytest都是基于python的單元測試框架,基本上都是由:test fixture(前置)、test case(測試用例)、test suite(測試集合)、test runner(運行測試)這幾個概念組成,能很好的支持各類斷言語句。

2. python ddt:數(shù)據(jù)驅(qū)動模塊

一般進(jìn)行接口測試時,每個接口的傳參都不止一種情況,一般會考慮正向、逆向等多種組合,所以在測試一個接口時,通常會編寫多條case,而這些除了傳參不同外,并沒有什么區(qū)別。這個時候就可以利用ddt來管理測試數(shù)據(jù),提高代碼復(fù)用率。

3. python requests:基于python的HTTP客戶端庫。

能夠模擬客戶端向服務(wù)器發(fā)送HTTP請求。

4. python xlrd:用于讀取excel的數(shù)據(jù)

能夠?qū)xcel表格進(jìn)行讀取,針對表單、逐行、逐列等方式讀取

5. allure:測試報告庫

http://www.itdecent.cn/p/139234261ce4?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

三. unittest

簡單用法

unittest是python自帶的一個單元測試框架,類似于java的junit,基本結(jié)構(gòu)是類似的?;居梅ㄈ缦拢?/p>

1.用import unittest導(dǎo)入unittest模塊

2.定義一個繼承自unittest.TestCase的測試用例類,如class xxx(unittest.TestCase):

3.定義setUp和tearDown,這兩個方法與junit相同,即如果定義了則會在每個測試case執(zhí)行前先執(zhí)行setUp方法,執(zhí)行完畢后執(zhí)行tearDown方法。

4.定義測試用例,名字以test開頭,unittest會自動將test開頭的方法放入測試用例集中。

5.一個測試用例應(yīng)該只測試一個方面,測試目的和測試內(nèi)容應(yīng)很明確。主要是調(diào)用assertEqual、assertRaises等斷言方法判斷程序執(zhí)行結(jié)果和預(yù)期值是否相符。

6.調(diào)用unittest.main()啟動測試

7.如果測試未通過,則會顯示e,并給出具體的錯誤(此處為程序問題導(dǎo)致)。如果測試失敗則顯示為f,測試通過為.,如有多個testcase,則結(jié)果依次顯示。

image.png

四. ddt模塊

ddt 是第三方模塊,需安裝, pip install ddt

DDT包含類的裝飾器ddt和兩個方法裝飾器data(直接輸入測試數(shù)據(jù))

通常情況下,data中的數(shù)據(jù)按照一個參數(shù)傳遞給測試用例,如果data中含有多個數(shù)據(jù),以元組,列表,字典等數(shù)據(jù),需要自行在腳本中對數(shù)據(jù)進(jìn)行分解或者使用unpack分解數(shù)據(jù)。

@data(a,b)

那么a和b各運行一次用例

@data([a,d],[c,d])

如果沒有@unpack,那么[a,b]當(dāng)成一個參數(shù)傳入用例運行

如果有@unpack,那么[a,b]被分解開,按照用例中的兩個參數(shù)傳遞

image.png

六. requests模塊

requests是python實現(xiàn)的簡單易用的HTTP庫,使用起來比urllib簡潔很多

因為是第三方庫,所以使用前需要cmd安裝

pip install requests

安裝完成后import一下,正常則說明可以開始使用了。

基本用法:

requests.get()用于請求目標(biāo)網(wǎng)站,類型是一個HTTPresponse類型

importrequestsresponse=requests.get('http://www.baidu.com')print(response.status_code)# 打印狀態(tài)碼print(response.url)# 打印請求urlprint(response.headers)# 打印頭信息print(response.cookies)# 打印cookie信息print(response.text)#以文本形式打印網(wǎng)頁源碼print(response.content)#以字節(jié)流形式打印

七. xlrd模塊

xlrd是讀取excel表格數(shù)據(jù);

支持xlsx和xls格式的excel表格;

三方模塊安裝方式:pip3 install xlrd;

模塊導(dǎo)入方式:import xlrd

基礎(chǔ)用法

# 文件名以及路徑,如果路徑或者文件名有中文給前面加一個r表示原生字符。workbook=xlrd.open_workbook(filename)# 通過名稱獲取sheet=workbook.sheet_by_name('open_live')# 1. 返回book中所有工作表的名字names=workbook.sheet_names()print(f'1. 返回book中所有工作表的名字: {names}')# 2. 獲取該sheet中的有效行數(shù)nrows=sheet.nrowsprint(f'2. 獲取該sheet中的有效行數(shù): {nrows}')# 3. 讀取前10行數(shù)據(jù)excel_data=[]foriinrange(10):# print(sheet.row(i))excel_data.append(sheet.row(i))

image.png

八. 測試用例設(shè)計

controller表:

控制各個表單模塊的執(zhí)行

各個表單執(zhí)行的前置條件:包括賬號、url、partner_id、partner_key等

image.png

模塊表

主要完成該模塊下測試用例的編寫,控制單條用例是否執(zhí)行,控制測試用例的關(guān)聯(lián)參數(shù)等

image.png

九. 難點介紹

如何在test環(huán)境push完代碼后就觸發(fā)jenkins任務(wù)?

這里主要介紹非匿名token訪問gitlab的方式,匿名token可以直接使用jenkins任務(wù)中的token訪問gitlab的鉤子

gitlab中提供了回調(diào)的鉤子,自動化測試需要提供一個接口來接收gitlab 的鉤子回調(diào),拿到開發(fā)提交代碼后的信息,這個信息會通過我們通過的接口,由gitlba回調(diào)給我們,當(dāng)我們判斷是test環(huán)境的主版本倉庫時,再調(diào)用jenkins-api來執(zhí)行相應(yīng)的自動化job

結(jié)果收集:如何收集jenkins執(zhí)行任務(wù)后的結(jié)果,并發(fā)送郵件:需要在服務(wù)端開一個crontab定時任務(wù),每分鐘去輪詢調(diào)用jenkins-api詢問當(dāng)前任務(wù)是否執(zhí)行完畢,并查詢狀態(tài),如果收集到結(jié)果,就保存當(dāng)前結(jié)果發(fā)送郵件并停止任務(wù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容