关键字 + 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)
# 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)