python ddt实现数据驱动
首先安装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实现数据驱动的更多相关文章
- python ddt 实现数据驱动一
ddt 是第三方模块,需安装, pip install ddt DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据) 通常情况下,data中的数据按照一个参数传递给测试用例,如果da ...
- python ddt 实现数据驱动
ddt 是第三方模块,需安装, pip install ddt DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据) 通常情况下,data中的数据按照一个参数传递给测试用例,如果da ...
- Python Selenium 之数据驱动测试
数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据.可以将测 ...
- python DDT读取excel测试数据
转自:http://www.cnblogs.com/nuonuozhou/p/8645129.html ddt 结合单元测试一起用 ddt(data.driven.test):数据驱动测试 由外部 ...
- Python Selenium 之数据驱动测试的实现
数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据.可以将测 ...
- python ddt数据驱动(简化重复代码)
在接口自动化测试中,往往一个接口的用例需要考虑 正确的.错误的.异常的.边界值等诸多情况,然后你需要写很多个同样代码,参数不同的用例.如果测试接口很多,不但需要写大量的代码,测试数据和代码柔合在一起, ...
- Selenium2+python自动化之数据驱动(ddt)
环境准备 1.安装ddt模块,打开cmd输入pip install ddt在线安装 数据驱动原理 1.测试数据为多个字典的list类型 2.测试类前加修饰@ddt.ddt 3.case前加修饰@ddt ...
- python接口自动化测试 - 数据驱动DDT模块的简单使用
DDT简单介绍 名称:Data-Driven Tests,数据驱动测试 作用:由外部数据集合来驱动测试用例的执行 核心的思想:数据和测试代码分离 应用场景:一组外部数据来执行相同的操作 优点:当测试数 ...
- python接口自动化:requests+ddt+htmltestrunner数据驱动框架
该框架分为四个包:xc_datas.xc_driven.xc_report.xc_tools. xc_datas:存放数据,xc_driven:存放执行程序,xc_report:存放生成的报告,xc_ ...
随机推荐
- vscode+WSL+Debug+Cmake+OpenGL
网页版:https://www.cnblogs.com/Jay-CFD/p/12584334.html WSL安装 参考:https://www.cnblogs.com/Jay-CFD/p/60672 ...
- NB-IOT关键技术分析
NB-IOT(NarrowBand Internet of Things,窄带IoT)是一种基于蜂窝的窄带物联网技术,支持低功耗设备在广域网的蜂窝数据连接.NB-IOT在物联网应用广泛,许多领域都充分 ...
- Java学习的第四十天
1.例4.1在其他函数中调用主函数 package bgio; public class cjava { public static void main(String[] args) { prints ...
- Java学习的第二十九天
1. 如果类中的某个属性不希望被序列化则需要transient关键字 序列化一组对象 2.无问题 3.明天学习打印流
- re模块,判断某行/某字符是否存在
import re ##判断行是否存在def get_need_line(): ## 获取有用信息行 with open('task.log',mode="r") as f: fo ...
- pandas模块常用函数解析之Series(详解)
pandas模块常用函数解析之Series 关注公众号"轻松学编程"了解更多. 以下命令都是在浏览器中输入. cmd命令窗口输入:jupyter notebook 打开浏览器输入网 ...
- 水题挑战2 :NOIP提高组 2011 聪明的质监员
小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 \(n\) 个矿石,从\(1\) 到 \(n\) 逐一编号,每个矿石都有自己的重量 \(w_i\) 以及价值 \(v_i\) .检验矿 ...
- numpy数组
一.数组创建 基础数组 1.array() array函数可以创建一维或多维数 一维数组 1.arange(起始值,终值,步长) 2.linspace(起始值,终值,元素个数) --创建等步长的数组 ...
- C++函数四( 具有默认参数值的函数)
在C++语言中,可以设置函数形参的默认值,在调用函数时,若明确给出了实参的值,则使用相应实参的值;若没有给出相应实参的值,则使用默认的值.这将为函数调用带来方便和灵活. [示例] #include&l ...
- Java项目——嗖嗖移动业务大厅
嗖嗖移动业务大厅包类(如下图): SosoMgr: 1 package cn.biz; 2 3 import java.util.Scanner; 4 5 import cn.common.Commo ...