从CSV文件读取测试用例,实现接口自动化测试

前言

随着项目对外输出的接口日渐增多,接口测试逐渐提上日程。经过一段时间的学习和摸索后,总结了一下。

方案

对于一些比较简单的接口,我们希望可以通过csv文件进行编辑和整理用例,对于一些复杂的接口可以通过自定义脚本的方式去实现,在执行完成后,以邮件的形式发送给相关同学。

为什么用CSV文件呢? 接口测试大多数测试用例会比较相似,对类似的接口进行反复相同的校验。针对这种简单的情况,我们希望把测试用例与测试脚本分开。如果重复用数据去请求和重写,是对测试资源的一种浪费,而CSV文件可以直接用EXCEL进行编辑,读取也非常方便,因此选作我们测试的用例集合。

如何参与测试?

1、对于简单的接口,我们直接用excel对csv文件进行编辑。

在选择添加的时候,可以填写当前请求的请求头和请求数据(部分举例)。

2、对于一些复杂的接口,我们可以自定义脚本。

支持自定义脚本的好处是,我们既可以单独运行自定义测试脚本,也可以将自定义的文件纳入全部测试用例中,作为回归测试一起执行。

开发流程

测试用例准备——执行测试用例、生成质量报告——自动发送邮件

1、测试用例准备

测试用例包括两部分,自定义测试脚本中的测试用例和CSV文件中自动读取的测试用例。

Unittest是Python自带的单元测试框架,默认有TestCase、TestResult、TestRunner等方法,非常方便。自定义接口测试的脚本类通过继承Unittest,编写并验证一些较复杂的接口。

为兼容自定义接口用例与文件读取的接口用例类型,从文件中读取的接口用例也需继承Unittest类。主要的实现思路是从指定CSV文件里面中读取数据,每读取一行,便通过自定义工场类TestFactory创建一个继承于Unittest的AutoTest的类。

AutoTest类当中,通过unittest默认的setUP()方法对每个参数进行初始化、judge_rule()方法对每行输入的数据进行重新处理(关于接口md5加密、urlencode、时间戳等)、test函数对接口进行简单的验证。

#每读取一行,变加入TestSuit里一个已test为名的用例

test_case =self.testf.create_test(row)

self.test_suit.addTests(map(test_case, ["test"]))

#通过unittest方法获取到自定义以_test为后缀名的用例

self.get_auto_test_suit = unittest.defaultTestLoader.discover("../basepages/",pattern='*_test.py')

#将两部分用例 通过addTests方法合并在一起,就是全部的接口测试用例

2、执行测试用例、生成质量报告

引入了BSTestRunner,对其进行修改和编辑后,生成测试报告。BSTestRunner也是通过重写Unittest的TestResult方法,对执行的结果进行展示。

在生成质量报告中,BSTestRunner生成全部用例的执行结果报告。面对这个情况,我们希望可生成两份报告,一份仅记录执行失败的用例报告,另一份为原生的全部用例执行结果报告。所以在BSTestRunner的基础上稍微进行了些改进,让其生成两份报告。

# 自动化测试报告

fp =open('../doc/my_report.html','wb')

# 仅错误版测试报告

fpe =open('../doc/my_report_email_text.html','wb')

runner = BSTestRunner.BSTestRunner(

stream=fp,

stream2= fpe,

title='接口测试自动质量报告',

description='如需接口测试完整报告'

)

这里简单给大家介绍下BSTestRunner这个引入的开源测试框架。

BSTestRunner 继承于 Template_mixin类,通过调用sortResult方法,将用例传给_TestResult类,获取到执行结果,用getReportAttribute()方法,将结果在html中展示出来。

了解这个开发测试框架后,我们对其改动就会很方便,这里我们重新定义了一个getReport()方法,仅将错误的执行结果在另一个html中保存。

3、发送测试报告邮件

使用python的smtpserver进行发送邮件,默认发送的邮件需要到具体邮箱里设置授权,这里注意password是授权码,不是邮箱的密码。

简洁版的执行结果my_report_email_text.html作为邮件内容HTML模板,全部执行结果my_report.html作为邮件附件。

发送邮件后,就可以收到具体的测试质量报告啦!


BSTestRunner Github地址:

https://github.com/easonhan007/HTMLTestRunner

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

推荐阅读更多精彩内容