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