zoukankan      html  css  js  c++  java
  • 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

      引言

      在上一篇《基于Python接口自动化测试框架(初级篇)附源码》讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构:

      可以看出testcase下有很多测试用例,并且每个测试用例都写了请求地址,请求参数,请求头等相关数据,还有一些断言的数据。如果接口很多的话,这样每个case写都要写,导致后期工作量大,维护起来不方便。

      针对上述情况,引入python一个非常好用的第三方库ddt,其作用就是数据驱动,将数据与代码分离,可以把所有的接口相关的测试用例数据存放在excel里,然后维护一个API文件,这样做就不需要写很多case代码。

      框架设计思路

    1.大致处理流程:

    2.接口自动化测试框架处理过程:

    1. 首先,测试数据初始化,维护的业务数据到数据库中,也就是截图中的第一步
    2. 第二步,用Excel维护一份接口测试用例数据(用例id、请求方法、请求参数、请求头、请求类型、返回数据,测试结果等)。
    3. 测试框架只需写一份调用API的代码,读取第二步的维护的接口测试数据,然后向被测系统发送请求,也就是图中的第三步。
    4. 当调用接口的时候,会查询数据库,就是第四步。
    5. 测试框架根据接口返回的数据和Excel的数据进行比较,生成最终测试结果写入Excel中,并且生成测试报告。

    大致流程:初始化测试数据→读取测试数据→发送请求→写入测试结果→生成测试报告→发送测试邮件。

    如图:

      框架结构

     

    这里就不重复介绍了,可以参考初级篇,对比一下。

    运行程序:

    ...............
    Time Elapsed: 0:00:01.106878
    邮件发送成功!

    测试报告:

      PS:右侧那个饼图是鼠标放上去自动会放大。

      邮件模块

    import os,sys
    sys.path.append(os.path.dirname(os.path.dirname(__file__)))
    from config import setting
    import smtplib
    from main.newReport import new_report
    import configparser
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    
    
    def send_mail(file_new):
        """
        定义发送邮件
        :param file_new:
        :return: 成功:打印发送邮箱成功;失败:返回失败信息
        """
        f = open(file_new,'rb')
        mail_body = f.read()
        f.close()
        #发送附件
        con = configparser.ConfigParser()
        con.read(setting.TEST_CONFIG,encoding='utf-8')
        report = new_report(setting.TEST_REPORT)
        sendfile = open(report,'rb').read()
        # --------- 读取config.ini配置文件 ---------------
        HOST = con.get("user","HOST_SERVER")
        SENDER = con.get("user","FROM")
        RECEIVER = con.get("user","TO")
        USER = con.get("user","user")
        PWD = con.get("user","password")
        SUBJECT = con.get("user","SUBJECT")
    
        att = MIMEText(sendfile,'base64','utf-8')
        att["Content-Type"] = 'application/octet-stream'
        att.add_header("Content-Disposition", "attachment", filename=("gbk", "", report))
    
        msg = MIMEMultipart('related')
        msg.attach(att)
        msgtext = MIMEText(mail_body,'html','utf-8')
        msg.attach(msgtext)
        msg['Subject'] = SUBJECT
        msg['from'] = SENDER
        msg['to'] = RECEIVER
    
        try:
            server = smtplib.SMTP()
            server.connect(HOST)
            server.starttls()
            server.login(USER,PWD)
            server.sendmail(SENDER,RECEIVER,msg.as_string())
            server.quit()
            print("邮件发送成功!")
        except Exception as  e:
            print("失败: " + str(e))

      运行代码后:

      Excel写入测试结果

      报告和邮件都有了,再来看看测试结果回写Excel的数据:

      结果和测试报告中结果一致。

      总结

      到此,接口自动化测试框架开发基本完成,本文主要讲述利用ddt进行数据驱动,实现测试数据与测试代码分开模式,以便提高可读性、执行效率和降低维护成本。
      还有一点需要说明,这套测试用例中的接口基本上是没有关联关系的,如果有上下关联的,就不能这样写了,不然第一个接口执行失败,后面基本全部失败。所以只适用于没有上下依赖关系的接口测试。
      虽然代码已经完成,还有一些细节的地方需要优化,比如日志、报告自动清理,定时发送邮件,Jenkins集成等等。

      附录

      更多干货:加入测试开发交流QQ群:696400122
      微信公众号:全栈测试开发日记,
      CSDN地址:https://blog.csdn.net/liudinglong1989/article/details/104457379

  • 相关阅读:
    mina 字节数组编解码器的写法 I
    latex编写论文
    HTML学习
    Apache Mina Filter
    静态循环队列的相关操作及详解
    hdu1242 Rescue(BFS +优先队列 or BFS )
    让我们区分质量保证与测试
    新玩的windows phone app studio
    Pylons安装苦逼之路
    [置顶] js 实现 <input type="file" /> 文件上传
  • 原文地址:https://www.cnblogs.com/liudinglong/p/12354744.html
Copyright © 2011-2022 走看看