自动化测试之基于DDT的测试数据参数化
DDT是针对 unittest 单元测试框架设计的扩展库。允许使用不同的测试数据来运行一个测试用例,并将其展示为多个测试用例。
安装:
pip install ddt
使用:
import unittest import time from selenium import webdriver from selenium.webdriver.common.by import By from ddt import ddt, data, file_data, unpack @ddt class TestBaidu(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome() cls.base_url = "https://www.baidu.com" def baidu_search(self, search_key): self.driver.get(self.base_url) self.driver.find_element(By.ID, "kw").send_keys(search_key) self.driver.find_element(By.ID, "su").click() time.sleep(3) @data(["case1", "selenium"], ["case2", "ddt"], ["case3", "python"]) @unpack def test_search1(self, case, search_key): self.baidu_search(search_key) self.assertEqual(self.driver.title, search_key + "_百度搜索") @classmethod def tearDownClass(cls): cls.driver.quit() if __name__ == '__main__': unittest.main(verbosity=2)
结果:
参数化使用方式一:
@data(["case1", "selenium"], ["case2", "ddt"], ["case3", "python"])
参数化使用方式二:
@data(("case1", "selenium"), ("case2", "ddt"), ("case3", "python"))
参数化使用方式三:
@data({"search_key": "selenium"}, {"search_key": "ddt"}, {"search_key":"python"})
使用 DDT 需要注意以下几点:
1. 测试类需要通过@ddt 装饰器进行装饰
2. DDT 提供了不同形式的参数化。这里列举了三组参数化,第一组为列表,第二组为元组,第三组为字典。需要注意的是,字典的 key 与测试方法的参数要保持一致。
DDT 同样支持数据文件的参数化。
1. json 格式的数据文件
# 参数化读取 JSON 文件 @file_data('ddt_data_file.json') def test_search(self, search_key): self.baidu_search(search_key) self.assertEqual(self.driver.title, search_key + "_百度搜索")
2. yaml 格式的数据文件
# 参数化读取 yaml 文件 @file_data('ddt_data_file.yaml') def test_search(self, case): search_key = case[0]["search_key"] self.baidu_search(search_key) self.assertEqual(self.driver.title, search_key + "_百度搜索")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律