使用RF+excel搭建接口測試框架

本文旨在分享一個接口測試框架啄育,環(huán)境使用python3+requests+rf測試框架酌心,采用Excel管理測試用例等集成測試數(shù)據(jù)功能织阳,使用rf組織測試用例并并生成測試報告泡一。

采用rf可以很好的支持流程類的接口磕蛇,組織各種繁雜的流程測試瓶逃。

測試框架處理流程


測試框架處理流程:

1谐丢、初始化測試數(shù)據(jù)严沥,可在rf中進行焕盟,常量直接寫在配置文件中即可

2夜畴、?? excel維護測試接口

3铝阐、?? 利用rf維護測試用例址貌,即利用各接口組裝不同的測試的流程,包含各步驟的斷言

4徘键、?? rf執(zhí)行時芳誓,根據(jù)組裝順序,解析EXCEL數(shù)據(jù)

5啊鸭、?? excel解析成功后會進行接口調(diào)用锹淌,發(fā)送請求

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

測試框架結構目錄介紹

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并返回查詢結果迫筑,即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進行匹配,結果需要>0,適用于返回結果格式固定且包含動態(tài)值的接口;

sql: 格式:sid@qry sql:key,將sql結果和response text中key對應的值進行比較,結果需要相等遵绰,適用于查詢類接口;

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

equal:將錄入值和response text進行比較椿访,錄入值需等于response text中,適用于返回結果固定的接口;

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、 變量設置(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:整個模塊結束時執(zhí)行一次什猖,套件清理動作

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

示例說明:

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

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

?? ***Settings***:依賴庫聲明在旱,支持Suite Setup摇零、Suite Teardown,僅作用于當前這個文件的套件

?? ***Test Cases***:測試用例桶蝎,支持Setup驻仅、Teardown谅畅,僅作用于當前這個測試用例

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

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


集成測試報告

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

1毡泻、pycharm中添加external toolRobot Run Testsuite

robot -dreports -P $ProjectFileDir$ $FilePathRelativeToProjectRoot$

pycharm中選中對應的文件,右鍵->External Tool-> Robot Run Testsuite

2粘优、命令行執(zhí)行仇味,打開cmd窗口

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

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

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

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丹墨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嬉愧,更是在濱河造成了極大的恐慌贩挣,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件没酣,死亡現(xiàn)場離奇詭異王财,居然都是意外死亡,警方通過查閱死者的電腦和手機裕便,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門搪搏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闪金,你說我怎么就攤上這事疯溺。” “怎么了哎垦?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵囱嫩,是天一觀的道長。 經(jīng)常有香客問我漏设,道長墨闲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任郑口,我火速辦了婚禮鸳碧,結果婚禮上,老公的妹妹穿的比我還像新娘犬性。我一直安慰自己瞻离,他們只是感情好,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布乒裆。 她就那樣靜靜地躺著套利,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肉迫,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天验辞,我揣著相機與錄音,去河邊找鬼喊衫。 笑死跌造,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的族购。 我是一名探鬼主播壳贪,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼联四!你這毒婦竟也來了撑碴?” 一聲冷哼從身側響起撑教,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤朝墩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后伟姐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體收苏,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年愤兵,在試婚紗的時候發(fā)現(xiàn)自己被綠了鹿霸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡秆乳,死狀恐怖懦鼠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情屹堰,我是刑警寧澤肛冶,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站扯键,受9級特大地震影響睦袖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜荣刑,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一馅笙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧厉亏,春花似錦董习、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春沥匈,著一層夾襖步出監(jiān)牢的瞬間蔗喂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工高帖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缰儿,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓散址,卻偏偏與公主長得像乖阵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子预麸,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

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