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

安装: 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-8
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import 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 + b


class 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格式不太熟悉,不知道元祖为什么不行


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值