首先安装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"]

最新文章

  1. angularjs自动化测试系列之karma
  2. 折腾一两天,终于学会使用grunt压缩合并混淆JS脚本,小激动,特意记录一下+spm一点意外收获
  3. 10 个实用技巧,让 Finder 带你飞
  4. 滴滴快车,安全把你带到凡科安全知识h5大赛
  5. SQL Server 的表数据简单操作
  6. springMVC 基于注解的controller
  7. WinForm------分页控件dll下载地址
  8. Fitnesse启动参数与配置
  9. GET 和 POST 两种方式来完成Http接口
  10. ie6的兼容总结
  11. CSS and JavaScript Bundling and Minification in ASP.NET 4.5
  12. 整数转字符与字符转整数的C系统函数
  13. 为客户打造RAC-DG一些遇到的问题汇总
  14. ORA-00845 Oracle 启不来修改 MEMORY_TARGET
  15. UNIX系统接口
  16. 图零直播新闻发布会—TOLINK2.0全面上线
  17. 从数据恢复角度解析RAID6结构原理
  18. spark 2.4 java8 hello world
  19. python框架之Django(13)-admin组件
  20. 计算概论(A)/基础编程练习2(8题)/8:1的个数

热门文章

  1. D. Alyona and Strings 解析(思維、DP)
  2. PLC模拟量采集模块在工控领域的应用
  3. .NET Core如何进行请求转发?
  4. CSP-S 2020模拟训练题1-信友队T1 四平方和
  5. 【Luogu】P1072 Hankson 的趣味题 题解
  6. C# 2 新增语法特性
  7. 【Kata Daily 190906】Vasya - Clerk(职员)
  8. Python优点与缺点
  9. python类继承中构造子的调用
  10. 使用webhook watch pod