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等专业测试框架。

相关推荐
song_ly0016 天前
深入理解软件测试覆盖率:从概念到实践
笔记·学习·测试
试着10 天前
【AI面试准备】掌握常规的性能、自动化等测试技术,并在工作中熟练应用
面试·职场和发展·自动化·测试
waves浪游10 天前
论坛系统测试报告
测试工具·测试用例·bug·测试
灰色人生qwer11 天前
使用JMeter 编写的测试计划的多个线程组如何生成独立的线程组报告
jmeter·测试
.格子衫.11 天前
powershell批处理——io校验
测试·powershell
试着12 天前
【AI面试准备】TensorFlow与PyTorch构建缺陷预测模型
人工智能·pytorch·面试·tensorflow·测试
waves浪游12 天前
博客系统测试报告
测试工具·测试用例·bug·测试
智云软件测评服务14 天前
数字化时代下,软件测试中的渗透测试是如何保障安全的?
渗透·测试·漏洞
试着15 天前
【AI面试准备】XMind拆解业务场景识别AI赋能点
人工智能·面试·测试·xmind
waves浪游16 天前
性能测试工具篇
测试工具·测试用例·bug·测试