ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] 前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的。如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载生成。 <br /> ## **一、环境准备** 1. 安装ddt模块,打开cmd输入pip3 install ddt在线安装 ``` >>pip3 install ddt ``` <br /> ## **二、数据驱动原理** 1. 测试数据为多个字典的list类型 2. 测试类前加修饰@ddt.ddt 3. case前加修饰@ddt.data() 4. 运行后用例会自动加载成三个单独的用例 ``` import ddt import unittest # 测试数据 testData = [{"username":"selenium", "password":"123"}, {"username":"python", "password":"123456"}, {"username":"appium", "password":"456"}] @ddt.ddt class Test(unittest.TestCase): def setUp(self): print("start!") def tearDown(self): print("end!") @ddt.data(*testData) def test_ddt(self, data): print(data) if __name__ == "__main__": unittest.main() ``` 5. 测试结果: ``` start! {'username': 'selenium', 'password': '123'} end! start! {'username': 'python', 'password': '123456'} end! start! {'username': 'appium', 'password': '456'} end! ``` <br /> ## **三、selenium案例** 1. 从上一篇封装的excel方法里面读取数据,作为测试测试 2. 在之前写的登录那篇基础上做点修改,测试参数读取excel里的数据 3. 代码参考如下: ``` from selenium import webdriver import unittest from time import sleep import ddt # 测试数据 testData = [{"username":"selenium", "password":"123"}, {"username":"python", "password":"123456"}, {"username":"appium", "password":"456"}] print(testData) @ddt.ddt class Blog(unittest.TestCase): '''登录博客''' def setUp(self): self.driver = webdriver.Chrome() url = "https://account.cnblogs.com/signin" self.driver.get(url) self.driver.implicitly_wait(30) def login(self, username, password): '''这里写了一个登录的方法,账号和密码参数化''' self.driver.find_element_by_id("mat-input-0").send_keys(username) self.driver.find_element_by_id("mat-input-1").send_keys(password) self.driver.find_element_by_css_selector(".mat-button-wrapper").click() sleep(3) def is_login_sucess(self): '''判断是否获取到登录账号名称''' try: text = self.driver.find_element_by_id("lnk_current_user").text print(text) return True except: return False @ddt.data(*testData) def test_login(self, data): '''登录案例参考''' print("当前测试数据 %s" %data) # 调用登录方法 self.login(data["username"], data["password"]) # 判断结果 result = self.is_login_sucess() self.assertTrue(result) def tearDown(self): self.driver.quit() if __name__ == "__main__": unittest.main() ```