首先安装ddt模块,命令:pip install ddt

通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据。

@data(a,b)

那么a和b各运行一次用例

@data([a,d],[c,d])

如果没有@unpack,那么[a,b]当成一个参数传入用例运行

如果有@unpack,那么[a,b]被分解开,按照用例中的两个参数传递

一:

 1 import unittest
2 from ddt import ddt,data,unpack
3 from time import sleep
4 from selenium import webdriver
5 @ddt
6 class MyTesting(unittest.TestCase):
7 def setUp(self):
8 self.dr = webdriver.Chrome()
9 self.dr.get('http://www.baidu.com')
10
11 @data(['python','python_百度搜索'],['java','java_百度搜索'])
12 @unpack
13 def test_baidu(self,a,b):
14 self.dr.find_element_by_id('kw').send_keys(a)
15 self.dr.find_element_by_id('su').click()
16 sleep(2)
17 c = self.dr.title
18 self.assertEqual(b,c)
19
20
21 def tearDown(self):
22 self.dr.close()
23 if __name__ == '__main__':
24 unittest.main(verbosity=2)

传入字典参数

import unittest
from ddt import ddt,data,unpack
from time import sleep
from selenium import webdriver
@ddt
class MyTesting(unittest.TestCase):
def setUp(self):
self.dr = webdriver.Chrome()
self.dr.get('http://www.baidu.com') @data({'a':'python','b':'python_百度搜索'},{'a':'java','b':'java_百度搜索'})
@unpack
def test_baidu(self,a,b):
self.dr.find_element_by_id('kw').send_keys(a)
self.dr.find_element_by_id('su').click()
sleep(2)
c = self.dr.title
self.assertEqual(b,c) def tearDown(self):
self.dr.close()
if __name__ == '__main__':
unittest.main()

二:传入JSON文件

import unittest
from ddt import ddt,data,unpack,file_data
from time import sleep
from selenium import webdriver
@ddt
class MyTesting(unittest.TestCase):
def setUp(self):
self.dr = webdriver.Chrome()
self.dr.get('http://www.baidu.com') @file_data('test.json')
@unpack
def test_baidu(self,a,b):
self.dr.find_element_by_id('kw').send_keys(a)
self.dr.find_element_by_id('su').click()
sleep(2)
c = self.dr.title
self.assertEqual(b,c) def tearDown(self):
self.dr.close()
if __name__ == '__main__':
unittest.main()

test.json文件内容如下,和上面代码同一路径

{
"positive_integer_range": {
"a": "python",
"b": "python_百度搜索"
},
"negative_integer_range": {
"a": "java",
"b": "java_百度搜索"
}
}

读取json文件的值

import unittest
from ddt import ddt,data,unpack,file_data
from time import sleep
from selenium import webdriver
@ddt
class MyTesting(unittest.TestCase):
def setUp(self):
self.dr = webdriver.Chrome()
self.dr.get('http://www.baidu.com') @file_data('test.json')
@unpack
def test_baidu(self,value):
self.dr.find_element_by_id('kw').send_keys(value)
self.dr.find_element_by_id('su').click()
# sleep(2)
# c = self.dr.title
# self.assertEqual(b,c) def tearDown(self):
self.dr.close()
if __name__ == '__main__':
unittest.main()

json文件如下:

{
"unsorted_list": "python",
"sorted_list": "java"
}

或者json文件改成一下:

["python","java"]

python ddt实现数据驱动的更多相关文章

  1. python ddt 实现数据驱动一

    ddt 是第三方模块,需安装, pip install ddt DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据) 通常情况下,data中的数据按照一个参数传递给测试用例,如果da ...

  2. python ddt 实现数据驱动

    ddt 是第三方模块,需安装, pip install ddt DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据) 通常情况下,data中的数据按照一个参数传递给测试用例,如果da ...

  3. Python Selenium 之数据驱动测试

    数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据.可以将测 ...

  4. python DDT读取excel测试数据

    转自:http://www.cnblogs.com/nuonuozhou/p/8645129.html ddt   结合单元测试一起用 ddt(data.driven.test):数据驱动测试 由外部 ...

  5. Python Selenium 之数据驱动测试的实现

    数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据.可以将测 ...

  6. python ddt数据驱动(简化重复代码)

    在接口自动化测试中,往往一个接口的用例需要考虑 正确的.错误的.异常的.边界值等诸多情况,然后你需要写很多个同样代码,参数不同的用例.如果测试接口很多,不但需要写大量的代码,测试数据和代码柔合在一起, ...

  7. Selenium2+python自动化之数据驱动(ddt)

    环境准备 1.安装ddt模块,打开cmd输入pip install ddt在线安装 数据驱动原理 1.测试数据为多个字典的list类型 2.测试类前加修饰@ddt.ddt 3.case前加修饰@ddt ...

  8. python接口自动化测试 - 数据驱动DDT模块的简单使用

    DDT简单介绍 名称:Data-Driven Tests,数据驱动测试 作用:由外部数据集合来驱动测试用例的执行 核心的思想:数据和测试代码分离 应用场景:一组外部数据来执行相同的操作 优点:当测试数 ...

  9. python接口自动化:requests+ddt+htmltestrunner数据驱动框架

    该框架分为四个包:xc_datas.xc_driven.xc_report.xc_tools. xc_datas:存放数据,xc_driven:存放执行程序,xc_report:存放生成的报告,xc_ ...

随机推荐

  1. vue 用别名取代路径引用

    在项目开发过程中有可能很多包是没有放在npm上的,许多包需要下载到本地引用,这样一来我们只能通过require的方式来引用文件,但是路径的名字就会很长 例如 import Select from '. ...

  2. JS删除微博

    昨天晚上找回了10年注册的微博,现在瞅瞅,转发过很多傻吊的微博,关注了一堆营销号,不忍直视,动手删吧!开玩笑的,怎么可能手动! 查看自己的所有微博,F12----->console,负责下面代码 ...

  3. R语言学习-(金融数据获取和简单的分析)

    利用R语言中的quantmod包和fBasics对股票数据的获取和简要的分析, 通过获取的数据进行典型图像绘制,使用JB正态性检验来检验是否服从于正态分布. 前提概要:quantmod 包默认是访问 ...

  4. python接口自动化测试--批量读取数据

    为了便于维护,python接口自动化测试用例可以利用xlrd模块读取excal表格进行数据分离.我们可以利用xlrd模块的row_values()和cell_value()两种方法读取Excal表格. ...

  5. Vulnhub DC3

    靶机简介 C-3是另一个专门建造的易受攻击的实验室,目的是获得渗透测试领域的经验.与以前的DC版本一样,这个版本是为初学者设计的,尽管这次只有一个标志,一个入口点,根本没有线索.Linux技能和熟悉L ...

  6. 开发工具:Mybatis.Plus.插件三种方式的逆向工程

    本文源码:GitHub·点这里 || GitEE·点这里 一.逆向工程简介 在Java开发中,持久层最常用的框架就是mybatis,该框架需要编写sql语句,mybatis官方提供逆向工程,可以把数据 ...

  7. python数据类型之List(列表)

    list列表 关注公众号"轻松学编程"了解更多. 1.概述: 通过前两天的学习,我们知道变量可以存储数据,但是一个变量只能存储一个数据,现在有一个班级,班级有20个人,现在求班级的 ...

  8. 左值 lvalue,右值 rvalue 和 移动语义 std::move

    参考文章: [1] 基础篇:lvalue,rvalue和move [2] 深入浅出 C++ 右值引用 [3] Modern CPP Tutorial [4] 右值引用与转移语义 刷 Leetcode ...

  9. leetcode93:insert-interval

    题目描述 给定一组不重叠的时间区间,在时间区间中插入一个新的时间区间(如果有重叠的话就合并区间). 这些时间区间初始是根据它们的开始时间排序的. 示例1: 给定时间区间[1,3],[6,9],在这两个 ...

  10. vs2010 中取消检测有潜在危险的 Request.Form 值的方法

    1,<%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="true&q ...