Python 接口自动化测试之数据驱动(DDT)

在接口测试中,一个接口往往需要有多组数据进行测试,以验证接口的正确性。这样就涉及到一个问题,是不是需要编写多个测试用例来实现呢?比如一个登陆接口,登陆成功的一组数据、登陆密码错误的一组数据、登陆账号错误的一组数据。那我们要怎么操作呢?数据驱动就可以很好的解决该问题。只需要编写一个测试用例脚本,通过传入不同的数据,返回不同的测试结果。

python中实现数据驱动是通过引入ddt模块来实现的。没有安装的,直接安装改模块即可。

import ddt

使用数据驱动时,需要在测试的模块上进行声明。在具体的测试方法上使用ddt.data()方法或者ddt.file_data()进行参数传递。

ddt.data()默认将参数都传递给第一个参数,每一组数据执行一遍测试用例,以达到数据驱动的效果。如果传递多个参数时需要用到ddt.unpack 声明进行拆分。

案例如下:

import ddtimport unittestimport ReadExcel
testData =ReadExcel.ReadExcel.readExcel('E:\\study\\data\\test_ddt.xls', 'Sheet1')@ddt.ddt #声明使用数据驱动class DDTtest(unittest.TestCase):    @ddt.data([1,2],[3,4])   #数据参数 @ddt.unpack #拆分参数 def test_A(self,a,b): print(a+b)
@ddt.data({'a','b'}) def test_B(self,a): print(a) @ddt.data([1,2]) def test_C(self,a): print(a)
    @ddt.data(*testData)  #读取Excel文件进行传递,这里必须是迭代器 def test_D(self, data): print(data) print('执行完成') return
if __name__=='__main__': unittest.main();
import xlrd#读取Excel的方法class ReadExcel():     def readExcel(fileName,SheetName='Sheet1'):         data = xlrd.open_workbook(fileName)         table = data.sheet_by_name(SheetName)         #获取总行数、总列数         nrows = table.nrows         ncols = table.ncols         if nrows > 1:             #获取第一行的内容,列表格式             keys = table.row_values(0)             #print(keys)             listApiData = []             #获取每一行的内容,列表格式             for col in range(1,nrows):                 values = table.row_values(col)                 # keys,values这两个列表一一对应来组合转换为字典                 api_dict = dict(zip(keys, values))                   #print(api_dict)                 listApiData.append(api_dict)             return listApiData         else:             return Noneif __name__ == '__main__':    s = ReadExcel.readExcel('E:\\study\\data\\test_ddt.xls','Sheet1')    print(s)
执行结果如下:
(0)

相关推荐

  • python3 selenium 抓取网页多个表格数据,并导入execl中

    python3 selenium 抓取网页多个表格数据,并导入execl中

  • Python魔法方法漫游指南:描述符

    描述符是 Python 语言中一个强大的特性,它隐藏在编程语言的底层,为许多神奇的魔法提供了动力. 如果你认为它只是个花里胡哨.且不太能用到的高级主题,那么本文将帮助你了解为什么描述符是一个非常有意思 ...

  • 天池项目总结,特征工程了解一下!(文末送书)

    业界广泛流传着这样一句话:"数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已",由此可见特征工程在机器学习中的重要性,今天我们将通过<阿里云天池大赛赛题解析- ...

  • 爬取1907条『课程学习』数据,分析哪类学习资源最受大学生青睐

    爬取1907条『课程学习』数据,分析哪类学习资源最受大学生青睐

  • python接口自动化1-发送get请求

    前言 requests模块,也就是老污龟,为啥叫它老污龟呢,因为这个官网上的logo就是这只污龟,接下来后面的自动化都离不开它. 一.环境安装 1.用pip安装requests模块 >>p ...

  • python接口自动化2-发送post请求

    前言 发送post的请求参考例子很简单,实际遇到的情况却是很复杂的,首先第一个post请求肯定是登录了,但登录是最难处理的.登录问题解决了,后面都简单了. 一.查看官方文档 1.学习一个新的模块,其实 ...

  • python接口自动化3-自动发帖(session)

    前言 上一篇模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等,这时候如何保持会话呢? 一.session简介 1.查看帮助文档,贴了一部分,后面省略了 >>im ...

  • python接口自动化4-绕过验证码登录(cookie)

    前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录coo ...

  • python接口自动化5-Json数据处理

    前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...

  • python接口自动化6-重定向(Location)

    前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了. 一.重定向 1. ...

  • python接口自动化7-参数关联

    前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 一.删除草稿箱 1.我们前面讲过登录后保存草稿箱, ...

  • python接口自动化8-参数化

    前言 前面一篇实现了参数的关联,那种只是记流水账的完成功能,不便于维护,也没什么可读性,接下来这篇可以把每一个动作写成一个函数,这样更方便了. 参数化的思维只需记住一点:不要写死! 一.登录函数 1. ...

  • python接口自动化9-https请求(SSL)

    前言 本来最新的requests库V2.13.0是支持https请求的,但是一般写脚本时候,我们会用抓包工具fiddler,这时候会 报:requests.exceptions.SSLError: [ ...