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

相关推荐
ly1561 天前
pytest-selenium的作用和常用操作-来自ai-个人留存
测试
VyrnSynx1 天前
CodeBuddy IDE震撼来袭:让开发更高效的全新工具,前沿内测大揭秘!
测试·笔记测评
莫魂魂2 天前
07.自动化测试常用函数
测试
胡斌附体2 天前
linux测试端口是否可被外部访问
linux·运维·服务器·python·测试·端口测试·临时服务器
智云软件测评服务3 天前
第三方软件测试检测机构能提供啥测试服务?功能测试了解下
测试·软件·
June bug4 天前
【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动
经验分享·分布式·职场和发展·架构·学习方法·测试·软考
郝同学的测开笔记14 天前
从 "不支持的URL" 错误谈 IPv6 兼容性与 HTTPDNS 优化
测试
chao_78916 天前
作为测试人员,平时用什么大模型?怎么用?
面试·大模型·测试
chao_78918 天前
死锁相关知识
网络协议·游戏·测试·死锁
cooldream200918 天前
pytest 框架详解与实战指南
pytest·测试