「这是我参与2022首次更文挑战的第8天,活动详情查看:2022首次更文挑战」
这里是清安,上一章我们讲了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
学了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):
# 实例化读取excel类方法
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数据驱动还有有着一些异曲同工之妙的。