python自动化测试框架源码_基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码...

引言

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

782587-20200223221422826-608301874.png

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

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

框架设计思路

1.大致处理流程:

782587-20200223221529160-828921911.png

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

首先,测试数据初始化,维护的业务数据到数据库中,也就是截图中的第一步

第二步,用Excel维护一份接口测试用例数据(用例id、请求方法、请求参数、请求头、请求类型、返回数据,测试结果等)。

测试框架只需写一份调用API的代码,读取第二步的维护的接口测试数据,然后向被测系统发送请求,也就是图中的第三步。

当调用接口的时候,会查询数据库,就是第四步。

测试框架根据接口返回的数据和Excel的数据进行比较,生成最终测试结果写入Excel中,并且生成测试报告。

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

如图:

782587-20200223221711918-2074048642.png

框架结构

782587-20200223221732475-2110173746.png

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

运行程序:

...............

Time Elapsed: 0:00:01.106878

邮件发送成功!

测试报告:

782587-20200223222013250-314438602.png

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))

运行代码后:

782587-20200223222123976-1114193307.png

Excel写入测试结果

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

782587-20200223222201702-1762507571.png

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

总结

到此,接口自动化测试框架开发基本完成,本文主要讲述利用ddt进行数据驱动,实现测试数据与测试代码分开模式,以便提高可读性、执行效率和降低维护成本。

还有一点需要说明,这套测试用例中的接口基本上是没有关联关系的,如果有上下关联的,就不能这样写了,不然第一个接口执行失败,后面基本全部失败。所以只适用于没有上下依赖关系的接口测试。

虽然代码已经完成,还有一些细节的地方需要优化,比如日志、报告自动清理,定时发送邮件,Jenkins集成等等。

附录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值