一键实现多文件、多Sheet的WEB自动化测试!

发表于:2024-3-08 09:17

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:程序员小濠    来源:知乎

  前言:
  在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开发领域的同学有所帮助,欢迎大家多交流!
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号