这里是清安,上一章我们讲了Yaml数据驱动,本章我们来说说Excel的数据驱动。
我们只需要写一个函数方法进行调用即可,读取Excel文件,将值进行返回便于下一个接口使用。
import xlrd class Excel_Login: def excel_login(self): file_name = xlrd.open_workbook(r'F:\111.xlsx') # 读取表单 sh1 = file_name.sheet_by_index(0) # 读取行数 rows = sh1.nrows datalist = [] for i in range(1, rows): # 遍历每行的值,添加到空列表 datalist.append(sh1.row_values(i)) return datalist
excel中的表数据是这样的:
学了Yaml的数据驱动,我们直接将代码copy过来即可。
"""元素定位登录界面代码""" class T_test(): def __init__(self,fox): self.fox = fox def login(self,f_get,username,password): self.fox.get(f_get) if_rame = self.fox.find_elements_by_tag_name('iframe')[0] self.fox.switch_to.frame(if_rame) self.fox.find_element_by_id('switcher_plogin').click() self.fox.find_element_by_id('u').send_keys(username) self.fox.find_element_by_id('p').send_keys(password) self.fox.find_element_by_id('login_button').click()
这里也就写到了,接下来是unittest模块,与Yaml的会稍微有一点点的不同:
@ddt class LoginTest(unittest.TestCase,T_test): i = Excel_Login().excel_login() def setUp(self) -> None: self.fox = webdriver.Firefox() self.fox.implicitly_wait(5) def tearDown(self) -> None: self.fox.quit() @data(*i) @unpack def test01(self,username,password): self.login('https://qzone.qq.com/',username,password) self.ele = self.fox.title self.assertEqual(self.ele, 'QQ空间-分享生活,留住感动',msg='不符合')
包记住该有的还得有,别少了,这里在模块内的添加了实例化对象,然后再去进行数据驱动,用两个参数进行接收解析出来的值用于账号登录。与Yaml数据驱动还有有着一些异曲同工之妙的。