51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2253|回复: 2

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

[复制链接]
  • TA的每日心情
    郁闷
    2022-8-29 14:43
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2018-2-6 15:45:10 | 显示全部楼层 |阅读模式
         前言

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

         方案

         对于一些比较简单的接口,我们希望可以通过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函数对接口进行简单的验证。
    1. #每读取一行,变加入TestSuit里一个已test为名的用例

    2. test_case =self.testf.create_test(row)

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

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

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

    6. #将两部分用例 通过addTests方法合并在一起,就是全部的接口测试用例
    复制代码
         2、执行测试用例、生成质量报告

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

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

    1. #自动化测试报告

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

    3. #仅错误版测试报告

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

    5. runner = BSTestRunner.BSTestRunner(

    6. stream=fp,

    7. stream2= fpe,

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

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

    10. )
    复制代码
           这里简单给大家介绍下BSTestRunner这个引入的开源测试框架。

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

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

           3、发送测试报告邮件

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

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

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


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-3-29 14:39 , Processed in 0.071110 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表