Python自动化测试实战指南
一、Python环境安装教程
1.1 各平台安装方法
Windows系统:
- 访问Python官网
- 下载最新版安装包(勾选
Add Python to PATH
) - 验证安装:
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)
五、学习资源推荐
-
官方文档:
-
实用工具链:
bash# 代码质量检查 pip install pylint && pylint your_script.py # 测试覆盖率检查 pip install pytest-cov pytest --cov=your_module tests/
-
书籍推荐:
- 《Python自动化测试实战》
- 《Testing Python: Applying Unit Testing, TDD, BDD and Acceptance Testing》
注意事项:
-
ChromeDriver需与浏览器版本匹配,下载地址:chromedriver.chromium.org/
-
推荐使用
requirements.txt
管理依赖 -
敏感信息建议使用
python-dotenv
管理:pythonfrom dotenv import load_dotenv load_dotenv() # 加载.env文件
本指南可作为Python自动化测试的入门手册,建议结合项目需求选择合适的技术方案。对于大型测试项目,建议采用Page Object设计模式或使用Robot Framework等专业测试框架。