自动化测试工程师的Python学习指南
作为自动化测试工程师,Python是你最该优先掌握的”瑞士军刀”——它语法简单、库多如牛毛,特别适合测试场景。下面用简单的语言告诉你该怎么学、学什么、怎么用。
一、为什么Python是测试工程师的首选
- 像说英语一样写代码
- 对比Java的System.out.println(“Hello”);,Python只需要print(“Hello”)
- 不用纠结分号、大括号,靠缩进就能让代码整洁(强迫症福音!)
- 测试库多到挑花眼
- Web自动化:Selenium →driver.find_element(“id”, “username”).click()
- 接口测试:Requests →requests.get(“https://api.com“)
- 数据处理:Pandas → 3行代码就能分析十万条测试日志
- 职场硬通货
- 招聘要求里10个自动化岗位,8个要Python(另外2个可能要Java)
二、学Python的四个阶段
1、阶段1:会抄就行(1周)
- 目标:能看懂并修改现成的测试脚本
- 必学内容:
Python:
# 变量和打印(把测试数据存起来)
username = "test_user" # 这就是变量,像个便签贴
password = "123456"
print(f"测试账号:{username}") # 打印出来检查
# if判断(做测试断言)
if 1 + 1 == 2:
print("加法测试通过!")
else:
print("BUG:1+1不等于2!")
# for循环(批量测试)
for i in range(3): # 重复3次
print(f"正在执行第{i+1}次登录测试")
2、阶段2:能写简单脚本(1个月)
- 目标:独立完成一个实际测试任务
- 实战例子:用Python检查网站标题
python:
from selenium import webdriver
# 打开浏览器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 断言标题对不对
assert "百度" in driver.title, "标题测试失败!"
print("标题测试通过!")
driver.quit() # 关浏览器
3、阶段3:会用测试框架(2-3个月)
- 目标:用Pytest组织成百上千个测试用例
- 框架优势:
- 自动发现测试文件(文件名带test_的)
- 生成炫酷的HTML报告(Allure)
- 示例:
python:
# test_login.py
import pytest
def test_admin_login():
assert login("admin", "123456") == True
def test_wrong_password():
assert login("admin", "111111") == False
def login(username, password):
# 这里实际调用登录接口
return True if password == "123456" else False
运行命令:pytest test_login.py -v(-v是显示详细结果)
4、阶段4:玩转高级技巧(持续学习)
- 文件处理:自动分析测试日志
python
with open("error.log") as f:
errors = [line for line in f if "ERROR" in line]
print(f"发现{len(errors)}个严重错误!")
- 多线程:同时测试多个接口提速
python:
import threading
def test_api(url):
print(f"开始测试:{url}")
# 实际测试代码...
urls = ["/api/login", "/api/order", "/api/pay"]
for url in urls:
threading.Thread(target=test_api, args=(url,)).start()
三、避坑指南
新手常犯的5个错误:
- 贪多嚼不烂
- ❌ 一开始就学Django/机器学习
- ✅ 先专注测试相关库:Selenium, Requests, Pytest
不写注释
- ❌ 三个月后自己都看不懂代码
- ✅ 像这样写注释:
python:
# 检查登录是否成功(返回True/False)
def check_login():
return "欢迎页" in driver.page_source
不会调试
- ❌ 满屏print(“到这里了”)
- ✅ 用断点调试:VSCode里按F5,PyCharm点左边行号加红点
- 闭门造车
- ❌ 自己闷头写
- ✅ 去GitHub搜”python automation testing”参考明星项目
- 不处理异常
- ❌ 网络一波动脚本就崩溃
- ✅ 加try-catch保命:
python:
try:
driver.find_element("id", "不存在的按钮").click()
except Exception as e:
print(f"元素找不到!错误信息:{e}")
四、真实工作流示例
用Python解放双手:
场景:每天要测试新用户注册功能
手工测试:
- 打开浏览器 → 2. 填表单 → 3. 点提交 → 4. 检查数据库 → 重复50次 😫
Python自动化:
python:
import requests # 发HTTP请求
import pymysql # 连数据库
def test_register():
# 1. 调用注册接口
url = "https://api.com/register"
data = {"username": "test", "password": "123456"}
res = requests.post(url, json=data)
# 2. 断言接口返回
assert res.status_code == 200
assert res.json()["success"] == True
# 3. 检查数据库
db = pymysql.connect("localhost", "test", "test", "db")
cursor = db.cursor()
cursor.execute("SELECT * FROM users WHERE username='test'")
assert cursor.fetchone() is not None # 确保数据库有记录
print("注册测试通过!")
# 想测多少次就调用多少次
test_register()