导读:1. 自动化测试类型
在开始之前,先了解常见的自动化测试类型:
单元测试(Unit Testing):测试代码的最小单元(如函数、类)。
集成测试(Integration Tes...
1. 自动化测试类型
在开始之前,先了解常见的自动化测试类型:
- 单元测试(Unit Testing):测试代码的最小单元(如函数、类)。
- 集成测试(Integration Testing):测试多个模块的协作。
- 端到端测试(E2E Testing):模拟用户操作,测试完整流程(如 Web 应用、移动应用)。
- API 测试:验证 API 的请求和响应。
- 性能测试:评估系统在高负载下的表现。
2. Python 自动化测试常用框架
(1) 单元测试框架
-
unittest(Python 内置)
- 基于 JUnit 设计,支持测试用例、测试套件、断言等。
- 示例:
python
复制
import unittest def add(a, b): return a + b class TestMath(unittest.TestCase): def test_add(self): self.assertEqual(add(2, 3), 5) if __name__ == '__main__': unittest.main() -
pytest
- 更简洁灵活,支持参数化测试、插件扩展。
- 示例:
python
复制
def add(a, b): return a + b def test_add(): assert add(2, 3) == 5- 运行命令:
pytest test_math.py
(2) Web 自动化测试
-
Selenium
- 用于浏览器自动化,支持 Chrome、Firefox 等。
- 示例:
python
复制
from selenium import webdriver driver = webdriver.Chrome() driver.get("https://www.google.com") search_box = driver.find_element("name", "q") search_box.send_keys("Python自动化测试") search_box.submit() driver.quit() -
Playwright(推荐)
- 新一代浏览器自动化工具,支持多浏览器、无头模式、网络拦截等。
- 示例:
python
复制
from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch() page = browser.new_page() page.goto("https://www.google.com") page.fill("input[name=q]", "Python自动化测试") page.press("input[name=q]", "Enter") browser.close()
(3) API 测试
-
requests + pytest
- 发送 HTTP 请求并验证响应。
- 示例:
python
复制
import requests def test_api_status_code(): response = requests.get("https://api.example.com/users") assert response.status_code == 200 -
FastAPI TestClient(针对 FastAPI 应用)
- 示例:
python
复制
from fastapi.testclient import TestClient from myapp.main import app client = TestClient(app) def test_read_item(): response = client.get("/items/1") assert response.status_code == 200 - 示例:
(4) 移动端测试
- Appium
- 支持 Android 和 iOS 应用的自动化测试。
- 示例代码类似 Selenium。
3. 测试最佳实践
- 保持测试独立:每个测试用例不依赖其他测试结果。
- 清晰的命名:测试函数名应描述测试目标(如
test_login_with_invalid_password)。 - 数据驱动测试:使用参数化测试(如
@pytest.mark.parametrize)覆盖多组输入。 - Mock 外部依赖:使用
unittest.mock或pytest-mock模拟数据库、API 调用等。 - 持续集成(CI):将测试集成到 CI/CD 流程(如 GitHub Actions、Jenkins)。
4. 常用工具和库
- 覆盖率报告:使用
coverage库生成代码覆盖率报告。- 命令:
coverage run -m pytest && coverage report
- 命令:
- 测试报告:使用
pytest-html生成 HTML 测试报告。- 命令:
pytest --html=report.html
- 命令:
- 环境管理:用
virtualenv或poetry隔离项目依赖。
5. 示例:完整的 pytest + Selenium 测试
python
复制
# test_web.py
import pytest
from selenium import webdriver
@pytest.fixture(scope="module")
def browser():
driver = webdriver.Chrome()
yield driver
driver.quit()
def test_google_search(browser):
browser.get("https://www.google.com")
search_box = browser.find_element("name", "q")
search_box.send_keys("Python自动化测试")
search_box.submit()
assert "Python自动化测试" in browser.title
运行命令:
bash
复制
pytest test_web.py -v
6. 持续集成(CI)示例
在 GitHub Actions 中配置自动化测试:
yaml
复制
# .github/workflows/tests.yml
name: Python Tests
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.9'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: pytest
标签:一般
- 上一篇:Python UI和接口自动化测试指南
- 下一篇:内江旅游景点美食攻略



发表评论: