基于python+requests+robotframework測試框架,采用Excel管理測試用例實現(xiàn)接口測試

????本文旨在分享一個接口測試框架络它,環(huán)境使用python3+requests+rf測試框架族檬,采用Excel管理測試用例等集成測試數(shù)據(jù)功能,使用rf組織測試用例并并生成測試報告化戳。采用rf可以很好的支持流程類的接口单料,組織各種繁雜的流程測試。


測試框架處理流程:

1点楼、初始化測試數(shù)據(jù)扫尖,可在rf中進行,常量直接寫在配置文件中即可

1盟步、?? excel維護測試接口

2藏斩、?? 利用rf維護測試用例躏结,即利用各接口組裝不同的測試的流程却盘,包含各步驟的斷言

3、?? rf執(zhí)行時媳拴,根據(jù)組裝順序黄橘,解析EXCEL數(shù)據(jù)

4、?? excel解析成功后會進行接口調(diào)用屈溉,發(fā)送請求

5塞关、?? rf執(zhí)行后,會自動生成詳細的測試報表及測試日志


測試框架結(jié)構(gòu)目錄介紹:

config/:? ? ? ? ??常量配置

framework/:? ?框架核心處理方法子巾,包含了excel解析帆赢、發(fā)送請求小压、數(shù)據(jù)庫交互等

logs/:????????????? 日志文件

reports/:?????????測試報告

rfsuite/:? ? ? ? ? RF測試用例

testdata/:? ? ? ?Excel維護測試接口


數(shù)據(jù)庫封裝:

1、 config/dbconf.ini? ---db數(shù)據(jù)庫連接信息配置

2椰于、 config/getdbconf.py? ---解析dbconf.ini怠益,獲取指定的配置項信息

def get_db_config(firstline, secondline):?? ---獲取指定的配置項的值,如獲取t0parp的dbType

3瘾婿、 framework/dbhandler.py? ---數(shù)據(jù)庫核心方法

def get_db_connect(self, sid):? ---建立指定數(shù)據(jù)庫的連接蜻牢,如t0parp

def do_query_sql(self, sid, sql, parms=None):? ---執(zhí)行query sql并返回查詢結(jié)果,即select sql

def do_commit_sql(self, sid, sql, parms=None):?? ---執(zhí)行commit sql偏陪,即update抢呆、delete sql

def do_func(self, sid, func, parms):??? ---執(zhí)行function

def do_procedure(self, sid, pro, parms):?? --執(zhí)行procedure


框架核心模塊:

1、 excel維護測試接口(主要字段)

method: 必填笛谦,請求方法抱虐,支持post、get饥脑、delete梯码、put、postwithmultipart

header: 非必填好啰,請求頭轩娶,json格式,支持引入變量框往,格式${var_name}

url:???必填鳄抒,請求地址,/開頭, 支持引入變量椰弊,格式${var_name}

parameter:非必填许溅,請求參數(shù),json格式, 支持引入變量秉版,格式${var_name}

filename: 非必填贤重,需上傳的文件,postwithmultipart時需要上傳文件清焕,文件完整路徑

assert_type: 必填并蝗,斷言類型,支持regex秸妥、sql滚停、in、equal??????????????

assert_expect: 必填粥惧,根據(jù)斷言類型键畴,輸入合適的斷言語句, 支持引入變量,格式${var_name}

????????????????????????? regex:?將正則表達式和response text進行匹配,結(jié)果需要>0,適用于返回結(jié)果格式固定且包含動態(tài)值的接口;

? ? ? ? ? ?sql:?格式:sid@qry sql:key,將sql結(jié)果和response text中key對應(yīng)的值進行比較,結(jié)果需要相等突雪,適用于查詢類接口;

? ? ? ? ? ?in:??將錄入值和response text進行比較起惕,錄入值需包含在response text中涡贱,適用于返回html等的接口;

???????equal:將錄入值和response text進行比較,錄入值需等于response text中惹想,適用于返回結(jié)果固定的接口;

saved_var_name: 非必填盼产,需保存的變量名,用于處理有些動態(tài)值需要傳遞給后續(xù)接口使用的情況

saved_var_type: 非必填勺馆,動態(tài)變量值獲取方式戏售,支持regex、sql

save_var_get: 必填草穆,根據(jù)動態(tài)變量值獲取方式灌灾,輸入合適的取值語句, 支持引入變量,格式${var_name}

? ? ? ? ??regex: 將正則表達式和response text進行匹配,需提取的變量部分使用()包起來;

? ? ? ? ??sql:? 格式:sid@qry sql,目前只支持查詢1個字段;

2悲柱、 變量設(shè)置(2種方式):

1锋喜、config/confdata.py文件中配置,適用于固定常量


2豌鸡、excel測試接口中動態(tài)保存嘿般,適用于動態(tài)變量,使用動態(tài)變量的接口調(diào)用前需要保證該變量已被生成

3涯冠、 framework/requestutil.py? ---request請求處理

def load_to_dict(data):?? ---將json字符串轉(zhuǎn)為字典格式炉奴,請求的header、parameter處理時會用到

def do_request(method, url, header=None, param=None, cookie=None, file=None, timeout=0):?? ---發(fā)送請求

def get_response_value(jsontext, key):?? ---獲取返回的response text指定key的value值蛇更,再斷言接口返回值時會用到

4瞻赶、 framework/excelutil.py??---excel數(shù)據(jù)處理

def get_case_dict(self, rowno):? ---獲取excel指定row_no的數(shù)據(jù),以字典形式返回【row_no從1開始派任,第0行為標題行】

def format_case_dict(self, sdict):? ---格式化excel行的數(shù)據(jù)砸逊,替換${}變量,以字典形式返回【sdict為get_case_dict返回的字典】

5掌逛、 framework/predata.py??? ---包裝測試數(shù)據(jù)

def get_case_dict(self, filename, sheetname, rowno):? ---獲取指定excel文件指定行的數(shù)據(jù)

def get_case_col_value(self, filename, sheetname, rowno, col_title): ?---獲取指定excel文件指定行指定列的單元格數(shù)據(jù)

6师逸、 framework/doexecutor.py??? ---測試用例執(zhí)行核心方法

def executor(self, filename, sheetname, rowno, cookie=None): ?---執(zhí)行測試用例,發(fā)送請求同時保持變量(如果有變量需要傳遞的話)

def assert_response(self, assert_type, expect, actual): ?---測試用例斷言方法

以下是我們系統(tǒng)的登錄cookie截取方法豆混,cookie需要傳遞給后續(xù)接口(cookie入?yún)?篓像,各系統(tǒng)可以根據(jù)實際情況定制。


接口測試用例編寫

測試用例采用RF進程維護崖叫,案例文件參考如下:

1遗淳、__init__.robot文件為初始化文件,一個模塊最先執(zhí)行此文件方法心傀,再一次按順序執(zhí)行其他文件

?? Suite Setup:整個模塊開始時執(zhí)行一次,套件初始化動作

?? Suite Teardown:整個模塊結(jié)束時執(zhí)行一次拆讯,套件清理動作

?? set global variable ${gloabal_var_name} ${value}:保存全局變量gloabal_var_name

示例說明:

D-登錄Super模塊執(zhí)行時脂男,先執(zhí)行__init__.robot文件:

2养叛、測試用例文件,基于__init__文件動作宰翅,繼續(xù)后續(xù)的測試驗證動作【可以直接引用全局變量】

?? ***Settings***:依賴庫聲明弃甥,支持Suite SetupSuite Teardown汁讼,僅作用于當前這個文件的套件

?? ***Test Cases***:測試用例淆攻,支持SetupTeardown嘿架,僅作用于當前這個測試用例

1瓶珊、???? RF按層級順序執(zhí)行用例

如下示例(假設(shè)模塊4中無子節(jié)點),執(zhí)行順序如箭頭所示:


集成測試報告

1robot執(zhí)行命令(2種方式):

1耸彪、pycharm中添加external toolRobot Run Testsuite

robot -dreports -P $ProjectFileDir$ $FilePathRelativeToProjectRoot$

pycharm中選中對應(yīng)的文件仙蛉,右鍵->External Tool-> Robot Run Testsuite

2壹士、命令行執(zhí)行,打開cmd窗口

?????? cd項目根目錄

robot -dreports -P .需要執(zhí)行的文件或測試用例

2、測試報告和日志存儲在reports目錄下后雷,右鍵->Open In Browser

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市械媒,隨后出現(xiàn)的幾起案子蛀骇,更是在濱河造成了極大的恐慌,老刑警劉巖荧呐,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件西乖,死亡現(xiàn)場離奇詭異,居然都是意外死亡坛增,警方通過查閱死者的電腦和手機获雕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來收捣,“玉大人届案,你說我怎么就攤上這事“瞻” “怎么了楣颠?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長咐蚯。 經(jīng)常有香客問我童漩,道長,這世上最難降的妖魔是什么春锋? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任矫膨,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侧馅。我一直安慰自己危尿,他們只是感情好,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布馁痴。 她就那樣靜靜地躺著谊娇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪罗晕。 梳的紋絲不亂的頭發(fā)上济欢,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天,我揣著相機與錄音小渊,去河邊找鬼法褥。 笑死,一個胖子當著我的面吹牛粤铭,可吹牛的內(nèi)容都是我干的挖胃。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼梆惯,長吁一口氣:“原來是場噩夢啊……” “哼酱鸭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起垛吗,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤凹髓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后怯屉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔚舀,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年锨络,在試婚紗的時候發(fā)現(xiàn)自己被綠了赌躺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡羡儿,死狀恐怖礼患,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掠归,我是刑警寧澤缅叠,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站虏冻,受9級特大地震影響肤粱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜厨相,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一领曼、第九天 我趴在偏房一處隱蔽的房頂上張望鸥鹉。 院中可真熱鬧,春花似錦悯森、人聲如沸宋舷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至音诈,卻和暖如春幻碱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背细溅。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工褥傍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人喇聊。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓恍风,卻偏偏與公主長得像,于是被迫代替她去往敵國和親誓篱。 傳聞我的和親對象是個殘疾皇子朋贬,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容