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

70 阅读2分钟

  文章转载链接www.51testing.com/html/56/n-7…

  前言:

  在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开发领域的同学有所帮助,欢迎大家多交流!