ddt是python的第三库,全名称为:Data-Driven/Decorated Tests。ddt模块提供了创建数据驱动的测试,关于该模块,建议到官方查看详细的说明,安装方法分别为命令行安装或者下载文件进行安装,分别进行说明,二种安装的方式具体见如下:
1、到官方地址https://pypi.python.org/pypi/ddt下载ddt-1.0.0.tar.gz文件,让后解压,到解压的目录下,输入:pythonsetup.py install安装,见如下的截图:
2、直接使用pip在线安装ddt,命令为:pip install ddt
因为已安装,所以使用pip在线安装的时候,提示已存在。
在ddt模块中,@data表示元组的列表数据,@unpack表示用来解压元组到多个参数,已百度登录用户名输入框为实例,来学习ddt模块在实际自动化测试中的应用,代码如下:
#coding:utf-8
import unittest
from seleniumimport webdriver
from ddtimport ddt,data,unpack
from timeimport sleep
@ddt
classdevelopTest(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Firefox()
self.driver.implicitly_wait(30)
self.driver.maximize_window()
self.driver.get('http://www.baidu.com')
self.addCleanup(self.driver.quit)
@data(('','',u'请您填写手机/邮箱/用户名'),('admin','',u'请您填写密码'),('admin','admin',u'您输入的帐号或密码有误,忘记密码?'))
@unpack
deftestLogin(self,sendValue1,sendValue2,expected):
self.driver.find_element_by_link_text(u'登录').click()
sleep(2)
#输入百度账号
userName=self.driver.find_element_by_id('TANGRAM__PSP_8__userName')
userName.clear()
userName.send_keys(sendValue1)
#输入百度密码
password=self.driver.find_element_by_id('TANGRAM__PSP_8__password')
password.clear()
password.send_keys(sendValue2)
#点击登录按钮
self.driver.find_element_by_id('TANGRAM__PSP_8__submit').click()
#获取到返回的错误信息
errorText=self.driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_8__error']").text
self.assertTrue(errorText,expected)
if__name__=='__main__':
unittest.main(verbosity=2)
test case执行完后的结果见截图:
从如上的代码以及执行结果的截图,我们可以地得到,这个测试用例验证了三个验证点,分别是:
1、百度账号为空,密码为空,点击登录按钮,验证返回的错误信息
2、输入百度账号,未输入密码,验证返回的错误信息
3、输入错误的账号和错误的密码,验证返回的错误信息
但是我们的核心代码只有如下的几行:
这正是ddt模块的优秀之处,几行代码,实现多个测试点,可以少写了很多代码,python语言的伟大之处不仅仅体现在它的测试驱动上面,还有很多很多的…