51Testing软件测试论坛
标题: python-unittest数据驱动(ddt) [打印本页]
作者: 测试积点老人 时间: 2018-12-12 14:13
标题: python-unittest数据驱动(ddt)
前言
在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的。如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载生成。
一、环境准备
1.安装ddt模块,打开cmd输入pip install ddt在线安装
>>pip install ddt
[attach]119993[/attach]
二、数据驱动原理
1.测试数据为多个字典的list类型
2.测试类前加修饰@ddt.ddt
3.case前加修饰@ddt.data()
4.运行后用例会自动加载成三个单独的用例
[attach]119994[/attach]
5.测试结果:
- Testing started at 21:51 ...
- start!
- {'username': 'selenium\xe7\xbe\xa4', 'psw': '232607095'}
- end!
- start!
- {'username': 'python\xe7\xbe\xa4', 'psw': '226296743'}
- end!
- start!
- {'username': 'appium\xe7\xbe\xa4', 'psw': '512200893'}
- end!
复制代码三、selenium案例
1.从上一篇封装的excel方法里面读取数据,作为测试测试Selenium2+python自动化58-读取Excel数据(xlrd)
2.在之前写的登录那篇基础上做点修改,测试参数读取excel里的数据Selenium2+python自动化48-登录方法(参数化)
3.代码参考如下
- # 测试数据
- testData = data.dict_data()
- print testData
- @ddt.ddt
- class Bolg(unittest.TestCase):
- u'''登录博客'''
- def setUp(self):
- self.driver = webdriver.Firefox()
- url = "https://passport.cnblogs.com/user/signin"
- self.driver.get(url)
- self.driver.implicitly_wait(30)
- def login(self, username, psw):
- u'''这里写了一个登录的方法,账号和密码参数化'''
- self.driver.find_element_by_id("input1").send_keys(username)
- self.driver.find_element_by_id("input2").send_keys(psw)
- self.driver.find_element_by_id("signin").click()
- time.sleep(3)
- def is_login_sucess(self):
- u'''判断是否获取到登录账户名称'''
- 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):
- u'''登录案例参考'''
- 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()
复制代码
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) |
Powered by Discuz! X3.2 |