顶部右侧自定义内容
顶部左侧自定义内容
当前位置:首页 > 我的文章 > 正文

Python UI和接口自动化测试指南

作者:neal发布时间:2025-03-24 17:06分类: 我的文章 浏览:162评论:0


导读:一、UI自动化测试 主要用于模拟用户操作(点击、输入、滑动等),验证界面交互功能。 常用工具 Selenium(主流Web UI自动化工具) 支持多种浏览器(Chrome/Fi...

一、UI自动化测试

主要用于模拟用户操作(点击、输入、滑动等),验证界面交互功能。

常用工具

  1. Selenium(主流Web UI自动化工具)
    • 支持多种浏览器(Chrome/Firefox/Edge等)
    • 支持多语言(Python/Java等)
  2. PyAutoGUI(跨平台,支持桌面应用和Web)
  3. Appium(移动端App自动化)

Selenium 示例

python

复制

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 1. 启动浏览器
driver = webdriver.Chrome()  # 需下载对应版本的chromedriver并配置环境变量

# 2. 打开页面
driver.get("https://www.baidu.com")

# 3. 定位元素并操作(显式等待优化稳定性)
search_box = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "kw"))
)
search_box.send_keys("Python自动化测试")

# 4. 点击搜索按钮
driver.find_element(By.ID, "su").click()

# 5. 验证结果
WebDriverWait(driver, 10).until(
    EC.title_contains("Python自动化测试")
)
assert "Python自动化测试" in driver.title

# 6. 关闭浏览器
driver.quit()

最佳实践

  • 使用 WebDriverWait 显式等待,避免硬性等待(如 time.sleep
  • 采用 Page Object 模式(PO设计模式)分离页面元素和测试逻辑
  • 结合 pytestunittest 管理测试用例

二、接口自动化测试

验证API的功能、性能及数据正确性。

常用工具

  1. Requests(发送HTTP请求)
  2. unittest/pytest(测试框架)
  3. Pytest + Requests(主流组合)
  4. FastAPI/Flask Test Client(测试自身开发的API)

接口测试示例(Pytest + Requests)

python

复制

import requests
import pytest

# 定义测试用例
def test_get_api():
    url = "https://api.example.com/users/1"
    response = requests.get(url)
    assert response.status_code == 200
    assert response.json()["username"] == "test_user"

def test_post_api():
    url = "https://api.example.com/login"
    data = {"username": "admin", "password": "123456"}
    response = requests.post(url, json=data)
    assert response.status_code == 200
    assert "token" in response.json()

# 使用pytest运行测试
# 命令行执行: pytest test_api.py

增强功能

  1. 参数化测试(多组输入验证):
    python

    复制

    @pytest.mark.parametrize("user_id, expected_username", [
       (1, "user1"),
       (2, "user2"),
    ])
    def test_multiple_users(user_id, expected_username):
       response = requests.get(f"https://api.example.com/users/{user_id}")
       assert response.json()["username"] == expected_username
  2. 环境配置分离(通过配置文件或 .env 管理不同环境URL)
  3. 数据清理(如测试后删除测试数据)

三、进阶工具链

  1. 测试报告
    • Allure Framework:生成美观的HTML报告
    • pytest-html:简单生成测试报告
  2. 持续集成(CI/CD):
    • 集成到 JenkinsGitHub ActionsGitLab CI
  3. Mock 服务
    • 使用 unittest.mockpytest-mock 模拟依赖接口

四、注意事项

  1. UI测试
    • 元素定位优先使用 IDXPath,避免依赖不稳定的CSS类名
    • 注意动态加载内容的等待策略
  2. 接口测试
    • 关注状态码、响应时间、数据格式和业务逻辑正确性
    • 对敏感接口添加鉴权(如Token验证)

标签:


发表评论: