• 一鍵實現多文件、多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號

    久久97久久97精品免视_欧洲国产伦久久久久久_91麻豆精品国产自产在线观_伊人久久大香线蕉综合av