接口自动化测试(三)
1|0一. 定义公共的请求方法
如下图所示,同一个模块,只是请求数据和返回数据不同,http请求的发送过程是完全相同的
对于不同模块,只是请求的url、请求方法、请求数据和返回数据不同,http请求的过程也是完全相同的
这样就可以将发送请求的方法写成一个类或函数,供不同的测试用例调用
具体的实现是
2|0二. 利用excel存储测试数据,实现测试数据和测试脚本的分离
利用excel存储测试数据的好处是,可以实现测试数据和测试脚本的分离,以后一旦数据有变动(添加删除、修改测试数据),不需要修改代码,只在excel中修改就好了
那么,测试数据和脚本是怎么联系在一起的?
可以定义一个读取excel的类,这个类读取到的数据返回给测试用例,测试用例再调用每一条测试数据去发送请求,进行比对。但有一个问题,按照以往的做法,一个test_send_request函数里利用for循环遍历每条测试数据,得到的结果始终是一个测试用例,我们希望每一条测试数据都是一个测试用例,就需要用到ddt
3|0三. ddt
3|11. 什么是ddt
ddt(data driven tests):数据驱动测试,由外部数据集合来驱动测试用例
核心的思想:数据和测试代码分离
3|22. 应用场景
一组数据来执行相同的操作
当测试数据发生大量变化的情况下测试代码(或者说测试用例)可以保持不变
3|33. ddt的安装
pip install ddt
3|44. ddt的用法
使用之前先导入ddt:
import ddt
ddt结合单元测试来使用
1). 在测试类定义之前使用:@ddt
2). 在测试用例定义之前使用:@ddt.data(测试数据),测试数据之间用逗号隔开
3). 在2的基础上定义测试用例时,参数接收2中的测试数据
例:
@ddt.ddt
class DemoTest(unittest.TestCase):
@ddt.data(2,3,4)
def test_print(self, a):
print("简单调用@data查看输出的值是什么?", a)
一组数据之间用逗号隔开
data的参数可以为如下几种:
1) 一组数据中,每个数据为单个值
2) 一组数据中,每个数据为一个列表或者一个字典
3) 文件对象:json、yaml
一组数据中的数据为列表或者字典:
@data([a,b],[c,d])
如何从以上数据中获取到列表中每一项值?
@unpack
若变量A=[{a:b, a1:b1},{c:d, c1:d1}]
如何将变量A中的每一组元素作为测试数据?
@data(*A)
数据为文件对象:json、yaml
{"name":"nick","gender":"male","age","29"}
@ddt.file_data(json文件路径)
思考:如何结合excel来使用ddt?
3|54. 实例
实例1
实例2
实例3
实例4
实例5
创建一个json文件my.json,内容为
测试用例类为
4|0参考文章
https://www.cnblogs.com/hellowcf/p/6962935.html
__EOF__

本文链接:https://www.cnblogs.com/my_captain/p/9317100.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?