unittest集成数据驱动-ddt

ddt => data driver test 数据驱动测试

@ddt : 类的装饰器

装饰类,也就是继承自TestCase的类。
@data:直接输入测试数据

装饰测试方法。参数是一系列的值。

@file_data:输入数据文件的绝对路径

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

注意,如果文件以”.yml”或者”.yaml”结尾,ddt会作为yaml类型处理,其他所有文件都会作为json文件处理。

如果文件中是列表,每个列表的值会作为测试用例参数,同时作为测试用例方法名后缀显示。

如果文件中是字典,字典的key会作为测试用例方法的后缀显示,字典的值会作为测试用例参数。

@unpack:分解数据标志

传递的是复杂的数据结构时使用。比如使用元组或者列表,添加unpack之后,ddt会自动把元组或者列表对应到多个参数上。字典也可以这样处理。

简单的单组元素

# 导入unittest
import unittest
from ddt import ddt,data
@ddt
class Demo(unittest.TestCase):
    # 前置条件
    def setUp(self) -> None:
        print('我要开始执行了哦')
    # 后置条件
    def tearDown(self) -> None:
        print('用例执行结束了!')
    # 创建用例
    @data('CSDN','软件测试')
    def test_testcase1(self,text):
        print(text)



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

示例1

# 导入unittest
import unittest
from time import sleep
from selenium import webdriver
from ddt import ddt,data
@ddt
class Demo(unittest.TestCase):
    # 前置条件
    def setUp(self) -> None:
        print('我要开始执行了哦')
        self.driver=webdriver.Chrome()
    # 后置条件
    def tearDown(self) -> None:
        print('用例执行结束了!')
        sleep(3)
        self.driver.quit()
    # 创建用例
    @data('CSDN','软件测试')
    def test_testcase1(self,text):
        self.driver.get('https://www.baidu.com/')
        self.driver.find_element_by_id('kw').send_keys(text)
        self.driver.find_element_by_id('su').click()
    # def test_testcase2(self):
    #     self.driver.get('https://www.baidu.com/')
    #     self.driver.find_element_by_id('kw').send_keys('welink')
    #     self.driver.find_element_by_id('su').click()


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

示例2

 npack 分解 tuple元组

# 导入unittest
import unittest
from time import sleep
from selenium import webdriver
from ddt import ddt,data,unpack
@ddt
class Demo(unittest.TestCase):
    # 前置条件
    def setUp(self) -> None:
        print('我要开始执行了哦')
        self.driver=webdriver.Chrome()
    # 后置条件
    def tearDown(self) -> None:
        print('用例执行结束了!')
        sleep(3)
        self.driver.quit()
    # 创建用例
    @data(('https://www.baidu.com/','CSDN'),('http://www.baidu.com/','软件测试'))# 元组
    @unpack# 二次分解元组
    def test_testcase1(self,url,text):
        self.driver.get(url)
        self.driver.find_element_by_id('kw').send_keys(text)
        self.driver.find_element_by_id('su').click()
    # def test_testcase2(self):
    #     self.driver.get('https://www.baidu.com/')
    #     self.driver.find_element_by_id('kw').send_keys('welink')
    #     self.driver.find_element_by_id('su').click()


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

示例3

 npack 分解列表(List)

# 导入unittest
import unittest
from time import sleep
from selenium import webdriver
from ddt import ddt,data,unpack
@ddt
class Demo(unittest.TestCase):
    # 前置条件
    def setUp(self) -> None:
        print('我要开始执行了哦')
        self.driver=webdriver.Chrome()
    # 后置条件
    def tearDown(self) -> None:
        print('用例执行结束了!')
        sleep(3)
        self.driver.quit()
    # 创建用例
    @data(['https://www.baidu.com/','CSDN'],['http://www.baidu.com/','软件测试'])# 列表
    @unpack# 二次分解
    def test_testcase1(self,url,text):
        self.driver.get(url)
        self.driver.find_element_by_id('kw').send_keys(text)
        self.driver.find_element_by_id('su').click()
    # def test_testcase2(self):
    #     self.driver.get('https://www.baidu.com/')
    #     self.driver.find_element_by_id('kw').send_keys('welink')
    #     self.driver.find_element_by_id('su').click()


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

示例4

 npack 分解字典dict

# 导入unittest
import unittest
from time import sleep
from selenium import webdriver
from ddt import ddt,data,unpack
@ddt
class Demo(unittest.TestCase):
    # 前置条件
    def setUp(self) -> None:
        print('我要开始执行了哦')
        self.driver=webdriver.Chrome()
    # 后置条件
    def tearDown(self) -> None:
        print('用例执行结束了!')
        sleep(3)
        self.driver.quit()
    # 创建用例
    @data({'url':'https://www.baidu.com/','text':'CSDN'},{'url':'http://www.baidu.com/','text':'软件测试'})# 字典
    @unpack# 二次分解
    def test_testcase1(self,url,text):
        self.driver.get(url)
        self.driver.find_element_by_id('kw').send_keys(text)
        self.driver.find_element_by_id('su').click()
    # def test_testcase2(self):
    #     self.driver.get('https://www.baidu.com/')
    #     self.driver.find_element_by_id('kw').send_keys('welink')
    #     self.driver.find_element_by_id('su').click()


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

 

# 导入unittest
import unittest
from time import sleep
from selenium import webdriver
from ddt import ddt,data,unpack
@ddt
class Demo(unittest.TestCase):
    # 前置条件
    def setUp(self) -> None:
        print('我要开始执行了哦')
        self.driver=webdriver.Chrome()
    # 后置条件
    def tearDown(self) -> None:
        print('用例执行结束了!')
        sleep(3)
        self.driver.quit()
    # 创建用例
    @data(*[{'url':'https://www.baidu.com/','text':'CSDN'},{'url':'http://www.baidu.com/','text':'软件测试'}])
    # 这里加 * 后会将返回数据分为一个个的字典
    @unpack# 二次分解元组
    def test_testcase1(self,**value):
        self.driver.get(value.get("url"))
        self.driver.find_element_by_id('kw').send_keys(value.get("text"))
        self.driver.find_element_by_id('su').click()
    # def test_testcase2(self):
    #     self.driver.get('https://www.baidu.com/')
    #     self.driver.find_element_by_id('kw').send_keys('welink')
    #     self.driver.find_element_by_id('su').click()


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

示例5

使用file_data

新建test_list.JSON

[
    "软件测试",
    "CSDN"
]
# 导入unittest
import unittest
from time import sleep
from selenium import webdriver
from ddt import ddt,data,unpack,file_data
@ddt
class Demo(unittest.TestCase):
    # 前置条件
    def setUp(self) -> None:
        print('我要开始执行了哦')
        self.driver=webdriver.Chrome()
    # 后置条件
    def tearDown(self) -> None:
        print('用例执行结束了!')
        sleep(3)
        self.driver.quit()
    # 创建用例
    @file_data('test_list.json')
    @unpack# 二次分解
    def test_testcase1(self,text):
        self.driver.get('https://www.baidu.com/')
        self.driver.find_element_by_id('kw').send_keys(text)
        self.driver.find_element_by_id('su').click()
    # def test_testcase2(self):
    #     self.driver.get('https://www.baidu.com/')
    #     self.driver.find_element_by_id('kw').send_keys('welink')
    #     self.driver.find_element_by_id('su').click()


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

未完待续

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值