数据驱动(ddt、text、excel、CSV、xml)"/>
数据驱动(ddt、text、excel、CSV、xml)
数据驱动之ddt
ddt库是第三方库,在dos命令窗口下安装,pip install ddt
其实现了编写一条测试用例的代码,验证多个测试点
@data表示元组的列表数据
@unpack表示用来解压元组到多个参数。
import unittest
from selenium import webdriver
from ddt import data,unpack,ddt
@ddt
class SianLogin(unittest.TestCase):def setUp(self) -> None:self.webdr = webdriver.Firefox()self.webdr.maximize_window()self.webdr.get("/")self.webdr.implicitly_wait(30)def tearDown(self) -> None:self.webdr.quit()@data(("","","请输入帐号"),("Mwyldnje2001","","请输入密码"),("","FF807612","请输帐号"),("Mwyldnje2002","FF807611","帐号或密码错误"),("Mwyldnje2003","FF807612","帐号或密码错误"),("Mwyldnje2002","FF807611","帐号或密码错误"),("Mwyldnje2003","FF807612",""))@unpackdef test_login(self,username,pwd,result):# 切换到账号密码登录self.webdr.find_element_by_css_selector("#lbNormal").click()# 切换到iframe框架下iframe = self.webdr.find_element_by_xpath('//div[@id="loginDiv"]/iframe') # 定位iframe框架self.webdr.switch_to.frame(iframe)# 传入账号密码self.webdr.find_element_by_name("email").send_keys(username)self.webdr.find_element_by_name("password").send_keys(pwd)# 点击登录self.webdr.find_element_by_id("dologin").click()# 定位提示元素,并获取文本信息reminder_text = self.webdr.find_element_by_class_name("ferrorhead").text# 断言self.assertEqual(reminder_text,result)if __name__ == '__main__':unittest.main(verbosity=2)
再test_login中三个参数分别是username,pwd,result分别与@data的元组数据一一对应。
优化之 数据分离
注意:1、在@data调用get_data函数时增加了“”,是因为@data要求的数据类型是元组,加上“”后便把get_data函数返回的数据列表类型变为元组类型。
2、元组类型的数据不能作为函数值返回
import unittest
from selenium import webdriver
from ddt import data,unpack,ddtdef get_data():'''数据分离出来放到列表中'''return [["","","请输入帐号"],["Mwyldnje2001","","请输入密码"],["","FF807612","请输入帐号"],["Mwyldnje2002","FF807611","帐号或密码错误"]]@ddt
class SianLogin(unittest.TestCase):def setUp(self) -> None:self.webdr = webdriver.Firefox()self.webdr.maximize_window()self.webdr.get("/")self.webdr.implicitly_wait(30)def tearDown(self) -> None:self.webdr.quit()@data(*get_data())@unpackdef test_login(self,username,pwd,result):# 切换到账号密码登录self.webdr.find_element_by_css_selector("#lbNormal").click()# 切换到iframe框架下iframe = self.webdr.find_element_by_xpath('//div[@id="loginDiv"]/iframe') # 定位iframe框架self.webdr.switch_to.frame(iframe)# 传入账号密码self.webdr.find_element_by_name("email").send_keys(username)self.webdr.find_element_by_name("password").send_keys(pwd)# 点击登录self.webdr.find_element_by_id("dologin").click()# 定位提示元素,并获取文本信息reminder_text = self.webdr.find_element_by_class_name("ferrorhead").text# 断言self.assertEqual(reminder_text,result)if __name__ == '__main__':unittest
更多推荐
数据驱动(ddt、text、excel、CSV、xml)
发布评论