介绍
这篇文章主要介绍了怎么利用Python实现数据驱动的接口自动化测试,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
<强> 1,需求强>
某API,让方法,令牌,手机、邮件三个参数
- <李>
标记为必填项
李> <李>手机、邮箱必填其中1项
李> <李>移动为手机号,邮件为邮件格式
李><强> 2,方案强>
针对上面的API,在做接口测试时,需要的测试用例动辄会多达10 +,这个时候采用数据驱动的方式将共性的内容写入配置文件或许会更合适。
这里考虑把API,参数,以及预期结果预行在格式化的CSV里保存,利用CSV组件从CSV里读取URL,参数以及预期结果,请求组件发起请求,将响应结果与预期结果进行比对,最后把比对结果写到结果CSV。
流程如下图?
<强> 3,实现强>
<强> 1,在上代码之前,先安装好如下几个组件:强>
- <李>
csv 读写CSV文件
李> <李>json
李> <李>requests 发起请求,获取响应结果
李> <李>unittest ,,测试用例调度
李><强> 2,数据。csv(本示例选取部分用例)强>
<强> 3,reader_CSV函数代码示例强>
import csv import json import 请求 import 时间 import unittest 文件名def readCSV(自我): ,& # 39;& # 39;& # 39; ,:param 文件名:需要读取的数据文件 :返回:大敌;[{data1}, {data2}……] ,& # 39;& # 39;& # 39;=,datas [] ,试一试: ,#以DictReader的方式读取数据文件,方便与json互做转换 ,with 开放(文件名,& # 39;" # 39;),as csvfile : ,#从文件里读取到的数据转换成字典列表的格式=,,reader  csv.DictReader (csvfile) ,for row 读者:拷贝=,data , {} ,数据(& # 39;id # 39;],=,行[& # 39;id # 39;】 ,数据(& # 39;url # 39;],=,行[& # 39;url # 39;】 ,数据(& # 39;标记# 39;],=,str(行[& # 39;标记# 39;]) ,数据(& # 39;移动# 39;],=,行[& # 39;移动# 39;】 ,数据(& # 39;电子邮件# 39;],=,行[& # 39;电子邮件# 39;】 ,数据(& # 39;期待# 39;],=,json.dumps(行[& # 39;期待# 39;]),\ ,if isinstance(行[& # 39;期待# 39;],dict), \ 行,else [& # 39;期待# 39;],#如果期望读取出来的不是json则取其原值,否则转为json格式保存到结果里 ,datas.append(数据) return 数据 ,#如果文件找不到,返回空的数据 ,except FileNotFoundError: ,打印(“文件不存在“,文件名) 以前,return 数据><强> 4,request_URL函数示例(包含得到请求和帖子请求2个方法)强>
def get_request(自我、url参数): ,& # 39;& # 39;& # 39; ,通用的调用得到接口方法 ,:param url: string 接口路径 ,:param 参数:{““:““,““:““},需要传入的参数 :返回:大敌;响应响应体 ,& # 39;& # 39;& # 39; ,打印(“调用API…“)=,,r  requests.get (url, params=参数) ,打印(r.text) return r def post_request(自我、url参数): ,& # 39;& # 39;& # 39; ,通用的调用后接口方法 ,:param url: string 接口路径 ,:param 参数:{““:““,““:““},需要传入的参数 ,:返回:响应响应体 ,& # 39;& # 39;& # 39; ,打印(“调用API…“)=,,r  requests.post (url, params=json.dumps (params)), #职位的方法必须用json.dumps()转化成json格式 ,打印(r.text) 以前,return r ><强> 5,assert_Result函数示例强>
def assertResult(自我、except_value real_value): ,& # 39;& # 39;& # 39; ,校验样本字符串中是否包含指定字符串 ,:param except_value: string 指定字符串 ,:param real_value: string 样本字符串 :返回:大敌;Boolean 样本中包含指定字符串返回真,否则返回错误的 ,& # 39;& # 39;& # 39;=,,ifsuccess  except_value str (real_value)拷贝 以前,return ifsuccess >怎么利用Python实现数据驱动的接口自动化测试