關鍵字 + excel數據 驅動設計 — 基於關鍵字驅動結構實現RobotFramework測試框架底層核心


rf最為出名的就是關鍵字驅動結合數據驅動,基於表格編程的形態實現自動化測試。
基於python+Excel實現rf的底層邏輯:
  1.在excel中填入關鍵字以及對應的參數
  2.讀取excel內容
  3.基於excel內容執行相對於的關鍵字函數,實現自動化測試

1.excel

 

 

2.關鍵字驅動類

# web_key_demo02.py +++++++++++++++++++++++++++++++++
import time
from selenium import webdriver
​
#基於type生成對應的瀏覽器對象
def browser(txt):
    try:
        # driver本身只限於webdriver對象
        driver = getattr(webdriver,txt)()
    except Exception as e:
        driver = webdriver.Chrome()
    return driver
​
class KeyDemo:
    def __init__(self, txt):
        self.driver = browser(txt)
    #訪問url
    def open(self,txt):
        self.driver.get(txt)
    #元素定位:8種元素定位
    def locator(self,name,value):
        return self.driver.find_element(name.strip(),value.strip())
    #輸入
    def input(self, name,value,txt):
        self.locator(name, value).send_keys(txt)
    #點擊
    def click(self, name,value):
        self.locator(name.strip(),value.strip()).click()
    #關閉瀏覽器
    def quit(self):
        self.driver.quit()
    def sleep(self,txt):
        time.sleep(txt)

 

3.讀取數據自動化執行

# read.py +++++++++++++++++++++++++++++++++
import openpyxl
from web_key_demo02 import KeyDemo
​
# 生成表格對象
excel = openpyxl.load_workbook('./data/test_case.xlsx')
# 工作表sheet的名字組成的列表
sheets = excel.sheetnames
for sheet in sheets:
    # 工作表對象
    sh = excel[sheet]
    for line_value in sh.values:
        # 一行一行的數據
        # print(line_value)
        # 表頭不處理
        if type(line_value[0]) == int:
            data = {}
            data['name'] = line_value[2]
            data['value'] = line_value[3]
            data['txt'] = line_value[4]
            # 去除空數據
            for key in list(data.keys()):
                if not data[key]:
                    del data[key]
            # 實例化driver對象
            if line_value[1] == 'browser':
                kd = KeyDemo(**data)
            else:
                # 反射拿到瀏覽器對象的各個方法,加括號傳入參數執行
                getattr(kd, line_value[1])(**data)
​

 

 


免責聲明!

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



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