为了账号安全,请及时绑定邮箱和手机立即绑定

python+selenium2.53.6学习(5)之数据驱动模块ddt

标签:
Python

安装: pip install ddt

测试:import ddt


DDT是 “Data-Driven Tests”的缩写

DDT: 包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(获取测试数据)


ddt.ddt:装饰类,也就是继承自TestCase的类

ddt.data:装饰测试方法。参数是一系列的值

ddt.file_data:装饰测试方法。参数是文件名。文件可以是json 或者 yaml类型

ddt.unpack:传递的是复杂的数据结构时使用。比如使用元组或者列表,添加unpack之后,ddt会自动把元组或者列表对应到多个参数上

先看不适用ddt的例子


# coding:utf-8from selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWaitimport unittest

data = [
    {'sum_a': 2, 'sum_b': 3, 'result': 5},    {'sum_a': 2, 'sum_b': 3, 'result': 6},    {'sum_a': 5, 'sum_b': 10, 'result': 4}
]def sum(a, b):    return a + bclass TestDDT(unittest.TestCase):    @classmethod    def setUpClass(cls):        cls.data = data        print        '验证a+b,a-b结果'    def test_01(self):        self.assertTrue(sum(self.data[0]['sum_a'], self.data[0]['sum_b']) == self.data[0]['result'])    def test_02(self):        self.assertTrue(sum(self.data[1]['sum_a'], self.data[1]['sum_b']) == self.data[1]['result'])    def test_03(self):        self.assertTrue(sum(self.data[2]['sum_a'], self.data[2]['sum_b']) == self.data[2]['result'])    def test_04(self):        for i in self.data:            self.assertEqual(sum(i['sum_a'], i['sum_b']), i['result'])    @classmethod    def tearDownClass(cls):        print        '验证结束'if __name__ == '__main__':
    unittest.main()

使用之后:


使用之后,代码一方面简洁了很多,在一个测试方法中执行多条测试用例,和图1的test_04相比,如果断言异常也会继续执行(因为是不同的case)

结果(unittest.main(verbosity=2)执行):


使用方法:

首先在Class上添加装饰器@ddt.ddt,其次在调用的方法上引入测试数据data('数据')

新建一个文件 test_data.json


{    "list_num": [ 10, 12, 15 , 23 ],    "tuple_num": [ 15, 12, 50 ],   "str_num": "welcome"}

引用


结果:


注: 对json格式不太熟悉,不知道元祖为什么不行

原文出处

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消