目录
前言:
设计目标
框架结构
实现
总结
前言:
在WEB开发中,自动化测试框架是一个不可或缺的组件。封装一个既能支持多文件,又能支持多Sheet的WEB自动化框架,将会极大地提升我们的开发效率。下面我将会详细介绍这样一个框架的设计、结构以及实现。
设计目标
WEB自动化框架的最基本功能就是能够对WEB应用进行操作,例如填写表单、点击按钮以及断言页面的某些属性等。另外,这个框架还需要满足如下几个设计要求:
1. 支持多文件: 支持同时测多个测试用例文件(Excel文件)。
2. 支持多Sheet: 每个测试用例文件中都可能存在多个Sheet,需要能够同时对多个Sheet进行测试。
3. 简单易用: 框架需要足够简单易用,降低使用难度。
框架结构
该框架主要由三部分组成:主程序、测试数据文件以及测试用例。
主程序:主程序主要负责读取测试数据文件中的测试用例,并执行自动化测试。
测试数据文件:框架支持多文件,已设计为Excel文件。每个Excel文件可以有多个Sheet,每个Sheet对应一个测试用例。
测试用例:测试用例是Excel文件中的Sheet,里面包含测试用例的所有数据,例如测试步骤、期望结果等。
实现
下面用Python代码实现具体功能,代码详解见注释。
import unittest
from selenium import webdriver
from openpyxl import load_workbook
class MyTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
# 创建一个浏览器 driver 实例
cls.driver = webdriver.Chrome()
cls.driver.maximize_window()
cls.driver.implicitly_wait(10)
@classmethod
def tearDownClass(cls):
cls.driver.quit()
def test_excel_data(self):
"""从Excel文件中读取测试数据"""
# 加载 Excel 文件
wb = load_workbook(filename='web_autotest.xlsx')
# 遍历所有 Sheet
# 每个 Sheet 单独执行一次自动化测试
for sheetname in wb.sheetnames:
ws = wb[sheetname]
# 遍历所有行
for row in ws.iter_rows(min_row=2):
# 读取测试数据
data = {}
data['step'] = row[0].value
data['locator'] = row[1].value
data['value'] = row[2].value
data['expect'] = row[3].value
# 执行测试步骤
self._test_step(data)
def _test_step(self, data):
"""执行测试步骤"""
step, locator, value, expect = data.values()
# 确定定位方式
if ':' in locator:
by = locator.split(':')[0]
value = locator.split(':')[1]
else:
by = 'xpath'
# 执行测试步骤
if step == 'open':
self.driver.get(value)
elif step == 'input':
self.driver.find_element(by=by, value=value).send_keys(value)
elif step == 'click':
self.driver.find_element(by=by, value=value).click()
elif step == 'assert':
self.assertEqual(expect, self.driver.find_element(by=by, value=value).text)
总结
本文介绍了一种支持多文件、多Sheet的WEB自动化测试框架的设计与实现。该框架能够非常方便地用于WEB应用自动化测试,提升开发效率。希望这篇文章能够对WEB开发领域的同学有所帮助,欢迎大家多交流!
作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试前进之路的必须品,如果你用得到的话可以直接拿走,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!
获取方式:留言【自动化测试】即可获取
【自动化测试交流】:574737577(进群备注ccc)http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=kBejXNHnzeKNqwOzwf8uRo-EPmQUZ7wl&authKey=yTwGvzhroHT6GcHrdGUH7BAFUlC4RFn1POhNBRXhQGm3qkeBc4%2F7DGYk%2Byi9vymF&noverify=0&group_code=574737577