前言

ddt:数据驱动,说的简单一点,就是多组测试数据,比如点点点的时候登录输入正常、异常的数据进行登录。

实际项目中,自动化测试用得很少,但也有人用excel来维护测试数据

一、ddt

1、安装:pip install ddt (我这里已经安装过了)

C:\Users\Administrator>pip install ddt
Requirement already satisfied: ddt in d:\path_python\lib\site-packages (1.2.)

2、先看下我们以前正常登录禅道的传参。登录需要账号与密码,现在只有一组数据,那么ddt就可以做到多组数据执行。(这里让你自己来)

# 登录
s = requests.session()
login_url = 'http://127.0.0.1/zentao/user-login.html'
pr = {
'account': 'admin',
'password': '',
}
login_r = s.post(login_url, params=pr) # 传 params 参数 # 断言是否登录成功
r1 = s.get('http://127.0.0.1/zentao/doc-browse-1-byModule-0-id_desc-doc.html')
if '产品主库' in r1.content.decode('utf-8'):
print('登录成功')
else:print('登录失败')

3、需导入ddt、unittest。

①首先得有多组的数据来源(我写的是自己定义的一组json数据,也可以读取文件,喜欢就好!!!)

②测试类,需要加上装饰器:@ddt.ddt

③测试函数,也需要加上装饰器且传所有数据过来,*分别传全部数据:@ddt.data(*test_data)

④注意:用到ddt的多组数据传的是 data ,而不是 test_data,更不是 *test_data

import requests, ddt, unittest

# ddt数据驱动所需准备的数据
test_data = [
{'account': 'admin', 'pwd': '', 'exp': 'admin'},
{'account': 'gsxl', 'pwd': '', 'exp': 'gsxl'},
{'account': 'xxxx', 'pwd': '', 'exp': 'xxxx'}, ] # 类需要ddt装饰器
@ddt.ddt
class Test_xl(unittest.TestCase): def setUp(self):
self.s = requests.session()
self.s.verify = False def tearDown(self):
self.s.close() @ddt.data(*test_data) # 某个用例需要用到ddt的测试数据
def test_001(self, data):
print('ddt测试数据是:%s' % data) if __name__ == '__main__':
unittest.main() # 告诉解释器我是用unittest运行的!!!

4、怎样对应取到想要的值呢?这好比返回的是dict、list,那一样是可以取到的,不然就先学学基础数据结构的新删查改了。如下简单提取:

import requests, ddt, unittest

# ddt数据驱动所需准备的数据
test_data = [
{'account': 'admin', 'pwd': '', 'exp': 'admin'},
{'account': 'gsxl', 'pwd': '', 'exp': 'gsxl'},] # 类需要ddt装饰器
@ddt.ddt
class Test_xl(unittest.TestCase): def setUp(self):
self.s = requests.session()
self.s.verify = False def tearDown(self):
self.s.close() @ddt.data(*test_data) # 某个用例需要用到ddt的测试数据
def test_001(self, data):
# print('ddt测试数据是:%s' % data)
user = data['account']
pwd = data['pwd']
exp = data['exp']
print('这是账号:', user)
print('这是密码:', pwd)
print('这是期望结果:', exp) if __name__ == '__main__':
unittest.main() # 告诉解释器我是用unittest运行的!!!

如果想用excel维护测试用例、测试数据的同学那肯定要懂得使用 xlrd 这个模块了。

进行适配的二次封装,达到你想设计的自动化模式。欢迎来QQ交流群:482713805

python接口自动化9-ddt数据驱动的更多相关文章

  1. 【python接口自动化】- DDT数据驱动测试

    简单介绍 ​ DDT(Date Driver Test),所谓数据驱动测试,简单来说就是由数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使用数据驱动测试的方法,可以在需要验证多组数据 ...

  2. Python接口自动化——soap协议传参的类型是ns0类型的要创建工厂方法纪要

    1:在Python接口自动化中,对于soap协议的xml的请求我们可以使用Suds Client来实现,其soap协议传参的类型基本上是有2种: 第一种是传参,不需要再创建啥, 第二种就是ns0类型的 ...

  3. python接口自动化(十)--post请求四种传送正文方式(详解)

    简介 post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先 ...

  4. python接口自动化-Cookie_绕过验证码登录

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

  5. python接口自动化28-requests-html爬虫框架

    前言 requests库的好,只有用过的人才知道,最近这个库的作者又出了一个好用的爬虫框架requests-html.之前解析html页面用过了lxml和bs4, requests-html集成了一些 ...

  6. python接口自动化-参数化

    原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...

  7. python接口自动化 -参数关联(一)

    原文地址https://www.cnblogs.com/yoyoketang/p/6886610.html 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址ht ...

  8. python接口自动化20-requests获取响应时间(elapsed)与超时(timeout)

    前言 requests发请求时,接口的响应时间,也是我们需要关注的一个点,如果响应时间太长,也是不合理的. 如果服务端没及时响应,也不能一直等着,可以设置一个timeout超时的时间 关于reques ...

  9. python接口自动化24-有token的接口项目使用unittest框架设计

    获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...

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

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

随机推荐

  1. js全局属性/函数

    全局函数 eval () isFinite ()             检查某个值是否为有穷大的数 isNaN () 检查某个值是否是数字                     返回true或fa ...

  2. enter键的使用

    vue全部的按键别名: .enter .tab .delete (捕获“删除”和“退格”键) .esc .space .up .down .left .right vue中 <input v-o ...

  3. [译]Vulkan教程(16)图形管道基础之总结

    [译]Vulkan教程(16)图形管道基础之总结 Conclusion 总结 We can now combine all of the structures and objects from the ...

  4. IT兄弟连 HTML5教程 CSS3揭秘 CSS常见的样式属性和值1

    CSS中的样式属性比较多,经常使用的属性可以分为这么几类:字体.文本.背景.位置.边框.列表,以及其他一些样式属性.每个类中的属性都可以单独使用:如果同一个类中多个属性一起使用,还可以将它们整合为一行 ...

  5. 软件测试价值提升之路- 第三章"拦截缺陷 "读书笔记

    作为一个测试团队,基本的职责是:测试产品,发现缺陷,报告结果,使每个版本的测试水准稳步提升.这些价值是作为一个测试所必须具备的,发挥这些价值能够让测试获得研发团队的基本信任.这类价值分为3部分: 1) ...

  6. Spring Boot 配置文件中的花样,看这一篇足矣!

    在快速入门一节中,我们轻松的实现了一个简单的RESTful API应用,体验了一下Spring Boot给我们带来的诸多优点,我们用非常少的代码量就成功的实现了一个Web应用,这是传统的Spring应 ...

  7. PhantomJS抓取中文文档乱码

    使用PhantomJs抓取百度标题乱码 var url="http://www.baidu.com" var page=require('webpage').create() pa ...

  8. 【重学Git】高级命令篇

    1.分离HEAD.HEAD 总是指向当前分支上最近一次提交记录. 所谓分离HEAD,就是让HEAD直接指向某一条具体的提交记录,而不是默认的通过分支名指向当前分支的最近一条提交记录. 2.相对引用^. ...

  9. Easy User Manager System writeup

    0x01 解题 思路 一个进程用自己的ip去申请拿到code然后进入verify页面,另外一个进程去申请8.8.8.8 步骤 1. 首先注册一个账号 然后用两个不同的浏览器进入Change页面.这里我 ...

  10. ios中仿蚂蚁森林动画效果

    参考链接:https://www.jianshu.com/p/0ba9d80f8e77 demo下载链接:https://gitee.com/ovix/TreeWithRandomFruitBtn