Python自動化測試學習(五)— 讀取Excel做數據驅動測試


1、讀取Excel文件

安裝xlrd庫,調用xlrd庫去讀取文件並返回數據
import xlrd
class ReadExcel:

    @staticmethod
    def get_data():
        # 創建一個空的List
        row_list = []
        # 打開工作簿
        book = xlrd.open_workbook("C:\\Users\\Think\\Desktop\\test_python_data.xlsx")
        # 獲取第一個sheet
        '''
        1、sheet.nrows: 工作表中有值總行數
        2、sheet.ncols:工作表中有值總列數
        3、sheet.row_values(rowx, start_colx=0, end_colx=None):
           返回給定行中單元格值的一部分(開始行,開始列默認是0,結束列)
        '''
        sheet = book.sheet_by_index(0)
        for i in range(1, sheet.nrows):
            row_value = sheet.row_values(i, 0, sheet.ncols-1)
            row_list.append(row_value)
        return row_list


# if __name__ == '__main__':
#     ReadExcel().get_data()

2、使用ddt庫中的@data解析數據,如下簡單示例:

import unittest
from ddt import ddt,data,unpack
from src.utils.ReadExcel import ReadExcel


@ddt
class Testddt2(unittest.TestCase):
    def setUp(self):
        pass

    '''
    *的作用類似於將原始數據的最外層括號拿掉,例如我們的原始數據是:
    [['123456', 111], ['111', 'aaa'], ['123458', 'aaa'], ['123459', 'aaa']]
    加上*之后變成:
    ['123456', 111], ['111', 'aaa'], ['123458', 'aaa'], ['123459', 'aaa']
    然后可使用@unpack讀取值,參數兩位,運行結果:
        15210 111
        111 aaa
        123458 aaa
        123459 aaa
    '''
    #調用ReadExcel類中的get_data()方法獲取數據

    @data(*ReadExcel().get_data())
    @unpack
    def test_1(self, username, password, message):
        print()
        print(username, password, message)

    '''
    不加*,不拆包時運行結果:
    [['123456', 111.0], ['111', 'aaa'], ['123458', 'aaa'], ['123459', 'aaa']]
    '''
    @data(ReadExcel().get_data())
    def test_2(self, value):
        print()
        print("---test_2---")
        print(value)
    '''
    不加*,使用@unpack時,運行結果:
    ['123456', 111.0] ['111', 'aaa'] ['123458', 'aaa'] ['123459', 'aaa']
    '''
    @data(ReadExcel().get_data())
    @unpack
    def test_3(self, value1, value2, value3, value4):
        print()
        print("---test_3---")
        print(value1, value2, value3, value4)

3、實際項目中使用:

from src.pages.LoginPage import LoginPage
from selenium import webdriver
from time import sleep
import unittest
from src.utils.ReadExcel import ReadExcel
from ddt import ddt, data, unpack
'''
    1、使用數據驅動模式,測試用戶登錄測試用例
    2、測試模板Excel
'''


@ddt
class TestLoginCaseDataDrive(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.url = "http://mail.163.com/"
        # 打開瀏覽器
        LoginPage(self.driver).open_browser(self.url)
        sleep(1)
    '''
    1、讀取ReadExcel類中的get_data(),獲取數據
    2、將獲取到的數據進行拆包,並根據數據個數傳參數
    3、test_login根據參數個數,運行多次(根據邏輯說明的)
    '''

    @data(*ReadExcel().get_data())
    @unpack
    def test_login(self, username, password, expect_message):
        print(username,password,expect_message)
        LoginPage(self).login_operation(username, password)
        # 定位錯誤提示消息,設置斷言
        actual_message = self.driver.find_element_by_xpath("//div[@class='ferrorhead']")
        print(actual_message.text)
        self.assertEqual(actual_message.text, expect_message, msg="測試失敗!")
        print("測試成功!")

    def tearDown(self):
        self.driver.quit()

4、簡單的Excel數據格式

5、生成測試報告

運行[https://www.cnblogs.com/liho/p/13851923.html]中的HtmlReport類
做測試所以將pattern改成了pattern='TestLoginCaseDataDrive.py',只測試當前文件,運行結果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM