基于python+requests+robotframework测试框架,采用Excel管理测试用例实现接口测试

    本文旨在分享一个接口测试框架,环境使用python3+requests+rf测试框架,采用Excel管理测试用例等集成测试数据功能,使用rf组织测试用例并并生成测试报告。采用rf可以很好的支持流程类的接口,组织各种繁杂的流程测试。


测试框架处理流程:

1、初始化测试数据,可在rf中进行,常量直接写在配置文件中即可

1、   excel维护测试接口

2、   利用rf维护测试用例,即利用各接口组装不同的测试的流程,包含各步骤的断言

3、   rf执行时,根据组装顺序,解析EXCEL数据

4、   excel解析成功后会进行接口调用,发送请求

5、   rf执行后,会自动生成详细的测试报表及测试日志


测试框架结构目录介绍:

config/:          常量配置

framework/:   框架核心处理方法,包含了excel解析、发送请求、数据库交互等

logs/:              日志文件

reports/:         测试报告

rfsuite/:          RF测试用例

testdata/:       Excel维护测试接口


数据库封装:

1、 config/dbconf.ini  ---db数据库连接信息配置

2、 config/getdbconf.py  ---解析dbconf.ini,获取指定的配置项信息

def get_db_config(firstline, secondline):   ---获取指定的配置项的值,如获取t0parp的dbType

3、 framework/dbhandler.py  ---数据库核心方法

def get_db_connect(self, sid):  ---建立指定数据库的连接,如t0parp

def do_query_sql(self, sid, sql, parms=None):  ---执行query sql并返回查询结果,即select sql

def do_commit_sql(self, sid, sql, parms=None):   ---执行commit sql,即update、delete sql

def do_func(self, sid, func, parms):    ---执行function

def do_procedure(self, sid, pro, parms):   --执行procedure


框架核心模块:

1、 excel维护测试接口(主要字段)

method: 必填,请求方法,支持post、get、delete、put、postwithmultipart

header: 非必填,请求头,json格式,支持引入变量,格式${var_name}

url:   必填,请求地址,/开头, 支持引入变量,格式${var_name}

parameter:非必填,请求参数,json格式, 支持引入变量,格式${var_name}

filename: 非必填,需上传的文件,postwithmultipart时需要上传文件,文件完整路径

assert_type: 必填,断言类型,支持regex、sql、in、equal              

assert_expect: 必填,根据断言类型,输入合适的断言语句, 支持引入变量,格式${var_name}

                          regex: 将正则表达式和response text进行匹配,结果需要>0,适用于返回结果格式固定且包含动态值的接口;

           sql: 格式:sid@qry sql:key,将sql结果和response text中key对应的值进行比较,结果需要相等,适用于查询类接口;

           in:  将录入值和response text进行比较,录入值需包含在response text中,适用于返回html等的接口;

       equal:将录入值和response text进行比较,录入值需等于response text中,适用于返回结果固定的接口;

saved_var_name: 非必填,需保存的变量名,用于处理有些动态值需要传递给后续接口使用的情况

saved_var_type: 非必填,动态变量值获取方式,支持regex、sql

save_var_get: 必填,根据动态变量值获取方式,输入合适的取值语句, 支持引入变量,格式${var_name}

          regex: 将正则表达式和response text进行匹配,需提取的变量部分使用()包起来;

          sql:  格式:sid@qry sql,目前只支持查询1个字段;

2、 变量设置(2种方式):

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


2、excel测试接口中动态保存,适用于动态变量,使用动态变量的接口调用前需要保证该变量已被生成

3、 framework/requestutil.py  ---request请求处理

def load_to_dict(data):   ---将json字符串转为字典格式,请求的header、parameter处理时会用到

def do_request(method, url, header=None, param=None, cookie=None, file=None, timeout=0):   ---发送请求

def get_response_value(jsontext, key):   ---获取返回的response text指定key的value值,再断言接口返回值时会用到

4、 framework/excelutil.py  ---excel数据处理

def get_case_dict(self, rowno):  ---获取excel指定row_no的数据,以字典形式返回【row_no从1开始,第0行为标题行】

def format_case_dict(self, sdict):  ---格式化excel行的数据,替换${}变量,以字典形式返回【sdict为get_case_dict返回的字典】

5、 framework/predata.py    ---包装测试数据

def get_case_dict(self, filename, sheetname, rowno):  ---获取指定excel文件指定行的数据

def get_case_col_value(self, filename, sheetname, rowno, col_title):  ---获取指定excel文件指定行指定列的单元格数据

6、 framework/doexecutor.py    ---测试用例执行核心方法

def executor(self, filename, sheetname, rowno, cookie=None):  ---执行测试用例,发送请求同时保持变量(如果有变量需要传递的话)

def assert_response(self, assert_type, expect, actual):  ---测试用例断言方法

以下是我们系统的登录cookie截取方法,cookie需要传递给后续接口(cookie入参),各系统可以根据实际情况定制。


接口测试用例编写

测试用例采用RF进程维护,案例文件参考如下:

1__init__.robot文件为初始化文件,一个模块最先执行此文件方法,再一次按顺序执行其他文件

   Suite Setup:整个模块开始时执行一次,套件初始化动作

   Suite Teardown:整个模块结束时执行一次,套件清理动作

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

示例说明:

D-登录Super模块执行时,先执行__init__.robot文件:

2、测试用例文件,基于__init__文件动作,继续后续的测试验证动作【可以直接引用全局变量】

   ***Settings***:依赖库声明,支持Suite SetupSuite Teardown,仅作用于当前这个文件的套件

   ***Test Cases***:测试用例,支持SetupTeardown,仅作用于当前这个测试用例

1、     RF按层级顺序执行用例

如下示例(假设模块4中无子节点),执行顺序如箭头所示:


集成测试报告

1robot执行命令(2种方式):

1pycharm中添加external toolRobot Run Testsuite

robot -dreports -P $ProjectFileDir$ $FilePathRelativeToProjectRoot$

pycharm中选中对应的文件,右键->External Tool-> Robot Run Testsuite

2、命令行执行,打开cmd窗口

       cd项目根目录

robot -dreports -P .需要执行的文件或测试用例

2、测试报告和日志存储在reports目录下,右键->Open In Browser

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容