参数化之ddt数据驱动框架

要使用ddt首先先安装ddt模块:pip install ddt。ddt数据驱动只能适用于unittest子类的类装饰器。

单个参数参数化:

from ddt import ddt,data,unpack
import unittest
from selenium import webdriver
import time


search_data = ('selenium', 'pytest', 'python')   #单个参数


@ddt
class testDDT(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.get('https://www.baidu.com/')

    # todo 把数据改成变量存储运行时,需要在前面加*
    @data(*search_data)
    def testddt(self, data):
        self.driver.find_element_by_css_selector('#kw').send_keys(data)
        self.driver.find_element_by_css_selector('#su').click()

    def tearDown(self):
        time.sleep(3)
        self.driver.quit()


if __name__ == '__main__':
    unittest.main()

上面这段代码在搜索百度的时候,会搜索3次,分别搜索selenium, pytest, python。同一段代码,代码不变,数据在变。提高了代码的复用性。

说下@ddt和@data这2个装饰器分别表示什么意思。

@ddt固定写法,这个不用纠结,使用ddt要在类上面加个装饰器@ddt,加了装饰器你才能使用ddt里面的方法。

@data装饰我们的测试方法 ,可以理解为一个for循环,循环遍历元组里面每个数据 ,然后依次传递给被装饰的方法的一个参数,有几条数据 就执行几次用例

 

@unpack自动拆包data里面的数据

 

多个参数参数化:

from ddt import ddt,data,unpack
import unittest
from selenium import webdriver
import time


testData = (["selenium","pytest"],["python","yield "])   #多个参数


@ddt
class testDDT(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.get('https://www.baidu.com/')

    # todo 把数据改成变量存储运行时,需要在前面加*
    @data(*testData)
    @unpack
    def testddt(self, data1,data2):
        self.driver.find_element_by_css_selector('#kw').send_keys(data1,data2)
        time.sleep(1)
        self.driver.find_element_by_css_selector('#su').click()

    def tearDown(self):
        time.sleep(1)
        self.driver.quit()


if __name__ == '__main__':
    unittest.main()

 

转载于:https://www.cnblogs.com/xiamaojjie/p/11577782.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值