python+selenium+unittest+excel数据驱动-2022-08

165 阅读1分钟

「这是我参与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数据驱动还有有着一些异曲同工之妙的。