我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。
上一篇我们讨论了数据驱动测试中如何读取Excel文件,今天我们试着进一步深入学习数据驱动。
本篇文章我们讨论一下如何使用数据驱动思想实现测试。
1、数据驱动框架基础知识
DDT:data-driven tests 的缩写形式。unittest 没有自带数据驱动功能,可以使用DDT来实现。
使用方法说明:
1)ddt.data :装饰测试方法,参数是一些列的值,比如元组等。
2)ddt.file_data: 装饰测试方法,参数是文件名,测试数据保存在参数文件中。
3)ddt.unpack:当ddt 传递复杂的数据结构时使用
举个简单的例子说明:
先感受一下ddt的执行效果
#coding = utf-8 import unittest import ddt @ddt.ddt class Test_exp(unittest.TestCase): def setUp(self): pass @ddt.data(1,2,3) def test_1(self,turns): print(turns) def tearDown(self): pass if __name__ == '__main__': unittest.main() 开始执行说找不到ddt,报错如下:
安装一下看看:
pip install ddt
再次执行成功了,如下如明显看出执行了3次,每个参数一次。
2、简单实例如登录
1)我们之前登录的写法
#输入正确的密码登录成功测试 def test_login_Y(self): username = "standard_user" password = "secret_sauce" print("登录的用户名是:%s,密码是:%s"%(username,password)) driver=login.Login(username,password).login() time.sleep(3) #加入断言 //*[@id="header_container"]/div[1]/div[2]/div # 验证有显示:Products UIResult = driver.find_element_by_xpath('//*[@id="header_container"]/div[2]/span').text self.assertEqual("Products", UIResult, "密码正确登录验证失败,fail") self.driver=driver
我们通过3组数据验证:
2)编写数据参数化的测试脚本
这里列一下上一篇文章我们写的读取Excel中数据的函数,这次要调用。
有以上的准备条件,可以使用ddt的思路写出了简单重复测试,这里只是用户名和密码的数据不一样的用例了。
#使用unittest的框架,每个案例的标准形式 @ddt class LoginTest(unittest.TestCase): def setUp(self): print("登录测试开始") #输入正确的密码登录成功测试 @data(*excel_data) def test_login_Y(self,dic): driver=login.Login(dic.get("username"),dic.get("password")).login() print("此次测试的用户名%s"%dic.get("username")) time.sleep(3) #加入断言 //*[@id="header_container"]/div[1]/div[2]/div # 验证有显示:Products UIResult = driver.find_element_by_xpath('//*[@id="header_container"]/div[2]/span').text self.assertEqual("Products", UIResult, "密码正确登录验证失败,fail") self.driver=driver def tearDown(self): #浏览器退出 self.driver.quit() print("登录测试结束") 检查测试结果:
测试了3次对应的用户名如上图。
3)关联我们生成报告并发送邮件的执行
这里只是截图一下,具体可以参考我之前的分享内容。
执行完成以后,测试报告如下:
今天就先学习到这里吧。
每天进步一点点,加油!