只需要一份Yaml檔案,即可實現UI自動化

backlightズ發表於2024-06-20
  • Pytest + Selenium/Appium + Yaml + allure 實現的UI自動化測試框架
  1. 使用環境
    allure-pytest==2.13.5
    Appium-Python-Client==4.0.0
    Faker==25.8.0
    Jinja2==3.1.4
    PyMySQL==1.1.1
    pytest==8.2.2
    pytest-xdist==3.6.1
    PyYAML==6.0.1
    selenium==4.21.0
  2. 實現邏輯

    • 初始驅動,返回 driver 
    • 基於顯示等待二次封裝selenium、appium元素操作方法
    • testcase 目錄下新增 conftest.py
      • 新增 pytest_collect_file 方法,收集測試用例。test 開頭或結尾的 yaml 檔案
      • 新增 pytest_generate_tests 方法,實現引數化
    • 處理 yaml 資料,替換變數
    • 動態建立 pytest 用例
    • 根據 yaml 檔案設定的關鍵字,執行selenium、appium
    • 生成 allure 報告
  3. Yaml檔案格式
    config:
      base_url: http://127.0.0.1:8000/login/action/
      variables:
        username: lixiaofeng
        password: 123456
        sql: select au.username  from auth_user au limit 1
      quote: 引用login檔案
    test_user_login_case:
    test_message_case:
      test_step:
        - skip: 跳過
        - sleep: "2"
        - screenshot: 異常截圖
        - click:
            type: xpath
            locate: //div[@class="navbar-header"]/div[2]/div[3]/button
        - click:
            type: xpath
            locate: //a[@href="/nb/message/"]
        - assert_text:
            type: xpath
            locate: //*[@id="layout-wrapper"]/div[2]/div/div/div[1]/div/div/h4
            text: 訊息通知
        - click:
            type: xpath
            locate: //div[@class="pull-right"]/button
        - sleep: "2"
        - assert_text:
            type: id
            locate: prompt-title
            text: 確認要將所有通知標記為【已讀】嗎?
        - click:
            type: xpath
            locate: //div[@class="modal-content"]/div[3]/button[2]
        - sleep: "2"
        - step: 斷言
        - assert_text:
            type: id
            locate: alert
            text: 暫無未讀通知
        - screenshot: 成功截圖
        - sleep: "3"
      story: 用例-新增模組管理
      title: 新增模組
      description: 該用例是針對 新增模組 的測試
    epic: 介面平臺
    feature: 訊息模組
  4. Allure報告
    • app

    • web

    • 本地趨勢圖

相關文章