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_ ...
随机推荐
- MFiX-DEM中的串行碰撞搜索
在计算颗粒碰撞的时候,需要进行neighbor颗粒的搜寻,只知道大概是基于网格与颗粒绑定的方式,但是具体的实现方式还是比较模糊.搜寻部分代码如下 (mfix-19.2.2): 可以直接观察到的是,这里 ...
- 打爆你的 CPU
打爆你的 CPU Intro 今天来尝试写一段代码,把 CPU 打满,让所有处理器的 CPU 使用率达到 100% 如何提高 CPU 使用率 想要提高 CPU 的使用率就是要让 CPU 一直在工作,单 ...
- javascript模块化(简)
这里书写一个个人理解以及整理的东西,关于模块化以及ES6语法推荐大家阅读阮一峰老师的ES6入门教程 地址:https://es6.ruanyifeng.com/ 比较散,请见谅 以前的js是没有模块化 ...
- python读取文件遇到问题及解决
用python的open()函数打开文件时, 1.文件写绝对路径报IOError: [Errno 2] No such file or directory.文件改为相对路径(只写文件名)解决该问题 2 ...
- 正式班D20
2020.11.02星期五 正式班D20 目录 11 软件包管理 11.1 软件包介绍 11.1.1 编程语言分类 11.1.2 三种安装包 11.2 rpm包管理 11.2.1 rpm包简介 11. ...
- 循序渐进VUE+Element 前端应用开发(25)--- 各种界面组件的使用(1)
在我们使用Vue+Element开发前端的时候,往往涉及到很多界面组件的使用,其中很多直接采用Element官方的案例即可,有些则是在这个基础上封装更好利用.更少代码的组件:另外有些则是直接采用第三方 ...
- 848.Shifting Letters——weekly contest 87
848. Shifting Letters 题目链接:https://leetcode.com/problems/shifting-letters/description/ 思路:O(N^2)复杂度过 ...
- Spring源码笔记
Spring Version:5.1.12 ApplicationContext 常用的实例化方式: ClassPathXmlApplicationContext FileSystemXmlAppli ...
- 手写Koa.js源码
用Node.js写一个web服务器,我前面已经写过两篇文章了: 第一篇是不使用任何框架也能搭建一个web服务器,主要是熟悉Node.js原生API的使用:使用Node.js原生API写一个web服务器 ...
- n阶行列式的全排列求解(Java)
上一个随笔,我介绍了全排列的递归求解,其中还有排列的逆序数等代码,这次我来介绍如何使用全排列计算行列式的值. 使用全排列求行列式的值,简单的描述就是: 对这个行列式每一行选取一个数,这些数处于行列式的 ...