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

相关推荐
前端工作日常11 小时前
我学习到的描述项目持续迭代具体成果
前端·测试
前端工作日常3 天前
平台价值与用户规模的共生关系
electron·测试·puppeteer
CrissChan5 天前
AI赋能软件工程让测试左移更加可实施
人工智能·python·llm·软件工程·测试
努力奋斗的Tom6 天前
Air test框架与appium的优势
测试
瑞士龙珠7 天前
JMeter 多台压力机分布式测试(Windows)
测试
Apifox7 天前
如何在 Apifox 中正确使用前置 URL?
前端·后端·测试
陈哥聊测试8 天前
软件工程3.0时代,为什么人工测试仍必不可少?
人工智能·测试
檀檀19939 天前
测试抓包工具2-whistle抓包
测试
用户35218024547510 天前
靶场:Breach3.0攻略
安全·测试
ZoeLandia11 天前
前端自动化测试:Jest、Puppeteer
前端·自动化测试·测试