zoukankan      html  css  js  c++  java
  • 参数化之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()
  • 相关阅读:
    根正苗红_百度百科
    会员
    阴阳屏_百度百科
    腹黑正太_百度百科
    创享派-互联网创业者社区
    TF-IDF与余弦相似性的应用(一):自动提取关键词
    跑过三关六码头,吃过奉化芋艿头里的三关六码头是什么?_百度知道
    梁周洋_百度百科
    PClady专访中国第一名媛、元媛舞会总裁周采茨女士【图】_摩登前沿 _奢品 _太平洋时尚网
    AV_百度百科
  • 原文地址:https://www.cnblogs.com/xiamaojjie/p/11577782.html
Copyright © 2011-2022 走看看