Python自动化测试

Python自动化测试实战指南

一、Python环境安装教程

1.1 各平台安装方法

Windows系统:

  1. 访问Python官网
  2. 下载最新版安装包(勾选Add Python to PATH
  3. 验证安装:
cmd 复制代码
python --version
# 应显示类似:Python 3.11.4

Linux/macOS:

bash 复制代码
# Debian/Ubuntu
sudo apt update && sudo apt install python3 python3-pip

# CentOS/RHEL
sudo yum install python3 python3-pip

# macOS(推荐Homebrew)
brew install python

1.2 配置虚拟环境

bash 复制代码
# 创建项目目录
mkdir auto_test_project && cd auto_test_project

# 创建虚拟环境
python -m venv venv

# 激活环境
# Windows
venv\Scripts\activate.bat
# Linux/macOS
source venv/bin/activate

1.3 安装测试相关库

bash 复制代码
pip install -U pip
pip install 
    pytest        # 测试框架
    requests      # HTTP测试
    selenium      # 浏览器自动化
    pytest-html   # HTML报告
    faker         # 测试数据生成

二、Python自动化测试典型场景

2.1 接口自动化测试

python 复制代码
# test_api.py
import pytest
import requests

class TestUserAPI:
    BASE_URL = "https://api.example.com"

    def test_user_login(self):
        """测试登录接口"""
        resp = requests.post(
            f"{self.BASE_URL}/login",
            json={"username": "test", "password": "123456"}
        )
        assert resp.status_code == 200
        assert "token" in resp.json()

    def test_user_info(self, auth_token):
        """测试用户信息获取"""
        headers = {"Authorization": f"Bearer {auth_token}"}
        resp = requests.get(f"{self.BASE_URL}/user", headers=headers)
        assert resp.json()["username"] == "test"

2.2 Web UI自动化测试

python 复制代码
# test_web.py
from selenium import webdriver
from selenium.webdriver.common.by import By

def test_login_flow():
    driver = webdriver.Chrome()
    driver.get("https://example.com/login")
    
    # 元素定位与操作
    driver.find_element(By.ID, "username").send_keys("test_user")
    driver.find_element(By.CSS_SELECTOR, "input#password").send_keys("pass123")
    driver.find_element(By.XPATH, "//button[text()='登录']").click()
    
    # 断言登录成功
    welcome_text = driver.find_element(By.CLASS_NAME, "welcome-msg").text
    assert "test_user" in welcome_text
    
    driver.quit()

2.3 数据驱动测试

python 复制代码
# test_data_driven.py
import pytest
from faker import Faker

fake = Faker()

@pytest.mark.parametrize("test_data", [
    {"username": "admin", "expected_role": "administrator"},
    {"username": "guest", "expected_role": "visitor"},
    {"username": fake.user_name(), "expected_role": "normal"}
])
def test_user_roles(test_data):
    # 模拟获取用户角色
    role = get_user_role(test_data["username"])
    assert role == test_data["expected_role"]

三、持续集成配置示例

3.1 Jenkins Pipeline配置

groovy 复制代码
pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git 'https://github.com/your/auto-tests.git'
            }
        }
        stage('Setup') {
            steps {
                sh 'python -m venv venv'
                sh 'source venv/bin/activate && pip install -r requirements.txt'
            }
        }
        stage('Run Tests') {
            steps {
                sh '''
                source venv/bin/activate
                pytest --html=report.html
                '''
            }
        }
        stage('Report') {
            steps {
                publishHTML(target: [
                    allowMissing: false,
                    alwaysLinkToLastBuild: true,
                    keepAll: true,
                    reportDir: '.',
                    reportFiles: 'report.html',
                    reportName: 'HTML Report'
                ])
            }
        }
    }
}

四、进阶技巧

4.1 测试报告生成

bash 复制代码
# 生成HTML报告
pytest --html=report.html

# 生成JUnit格式报告
pytest --junitxml=report.xml

4.2 并发测试执行

python 复制代码
# 安装插件
pip install pytest-xdist

# 并行执行测试
pytest -n 4  # 使用4个进程

4.3 Mock测试

python 复制代码
from unittest.mock import Mock

def test_payment_service():
    # 创建Mock对象
    payment_mock = Mock()
    payment_mock.process.return_value = {"status": "success"}
    
    # 注入Mock
    result = handle_payment(payment_mock)
    
    assert result is True
    payment_mock.process.assert_called_once_with(amount=100.0)

五、学习资源推荐

  1. 官方文档:

  2. 实用工具链:

    bash 复制代码
    # 代码质量检查
    pip install pylint && pylint your_script.py
    
    # 测试覆盖率检查
    pip install pytest-cov
    pytest --cov=your_module tests/
  3. 书籍推荐:

    • 《Python自动化测试实战》
    • 《Testing Python: Applying Unit Testing, TDD, BDD and Acceptance Testing》

注意事项:

  1. ChromeDriver需与浏览器版本匹配,下载地址:chromedriver.chromium.org/

  2. 推荐使用requirements.txt管理依赖

  3. 敏感信息建议使用python-dotenv管理:

    python 复制代码
    from dotenv import load_dotenv
    load_dotenv()  # 加载.env文件

本指南可作为Python自动化测试的入门手册,建议结合项目需求选择合适的技术方案。对于大型测试项目,建议采用Page Object设计模式或使用Robot Framework等专业测试框架。

相关推荐
得物技术4 小时前
得物研发自测 & 前端自动化测试体系建设
前端·测试
北京_宏哥6 小时前
🔥《刚刚问世》系列初窥篇-Java+Playwright自动化测试-19- 操作鼠标悬停(详细教程)
java·前端·测试
康谋自动驾驶1 天前
康谋方案 | 高精LiDAR+神经渲染3DGS的完美融合实践
数据采集·测试·雷达·仿真·建模
大话性能1 天前
Python中dict遍历,让你的编程更高效
测试
雪球工程师团队2 天前
让 Bug 自动“蒸发”!我们造了个 AI 程序员同事
前端·ai编程·测试
大话性能3 天前
Mysql 百万级数据迁移实战笔记
测试
乾巫宇宙国监察特使3 天前
Python的设计模式
python·测试
半路下车4 天前
【Harmony OS 5】HarmonyOS应用测试进阶
测试·harmonyos
智云软件测评服务4 天前
软件功能测试目的是啥?如何通过测试用例确保产品达标?
测试·实际·预期
Sheeep6 天前
学习Pytest + Hypothesis——能帮你发现你自己都没想到的 bug
python·测试