自动化测试工程师的Python学习指南

作为自动化测试工程师,Python是你最该优先掌握的”瑞士军刀”——它语法简单、库多如牛毛,特别适合测试场景。下面用简单的语言告诉你该怎么学、学什么、怎么用。

一、为什么Python是测试工程师的首选

  1. 像说英语一样写代码
    • 对比Java的System.out.println(“Hello”);,Python只需要print(“Hello”)
    • 不用纠结分号、大括号,靠缩进就能让代码整洁(强迫症福音!)
  2. 测试库多到挑花眼
    • Web自动化:Selenium →driver.find_element(“id”, “username”).click()
    • 接口测试:Requests →requests.get(“https://api.com“)
    • 数据处理:Pandas → 3行代码就能分析十万条测试日志
  3. 职场硬通货
    • 招聘要求里10个自动化岗位,8个要Python(另外2个可能要Java)

二、学Python的四个阶段

1、阶段1:会抄就行(1周)

  • 目标:能看懂并修改现成的测试脚本
  • 必学内容

Python:

  1. # 变量和打印(把测试数据存起来)
  2. username = "test_user" # 这就是变量,像个便签贴
  3. password = "123456"
  4. print(f"测试账号:{username}") # 打印出来检查
  5. # if判断(做测试断言)
  6. if 1 + 1 == 2:
  7. print("加法测试通过!")
  8. else:
  9. print("BUG:1+1不等于2!")
  10. # for循环(批量测试)
  11. for i in range(3): # 重复3次
  12. print(f"正在执行第{i+1}次登录测试")

2、阶段2:能写简单脚本(1个月)

  • 目标:独立完成一个实际测试任务
  • 实战例子:用Python检查网站标题

python:

  1. from selenium import webdriver
  2. # 打开浏览器
  3. driver = webdriver.Chrome()
  4. driver.get("https://www.baidu.com")
  5. # 断言标题对不对
  6. assert "百度" in driver.title, "标题测试失败!"
  7. print("标题测试通过!")
  8. driver.quit() # 关浏览器

3、阶段3:会用测试框架(2-3个月)

  • 目标:用Pytest组织成百上千个测试用例
  • 框架优势
    • 自动发现测试文件(文件名带test_的)
    • 生成炫酷的HTML报告(Allure)
  • 示例

python:

  1. # test_login.py
  2. import pytest
  3. def test_admin_login():
  4. assert login("admin", "123456") == True
  5. def test_wrong_password():
  6. assert login("admin", "111111") == False
  7. def login(username, password):
  8. # 这里实际调用登录接口
  9. return True if password == "123456" else False

运行命令:pytest test_login.py -v(-v是显示详细结果)

4、阶段4:玩转高级技巧(持续学习)

  • 文件处理:自动分析测试日志

python

  1. with open("error.log") as f:
  2. errors = [line for line in f if "ERROR" in line]
  3. print(f"发现{len(errors)}个严重错误!")
  • 多线程:同时测试多个接口提速

python:

  1. import threading
  2. def test_api(url):
  3. print(f"开始测试:{url}")
  4. # 实际测试代码...
  5. urls = ["/api/login", "/api/order", "/api/pay"]
  6. for url in urls:
  7. threading.Thread(target=test_api, args=(url,)).start()

三、避坑指南

新手常犯的5个错误:

  1. 贪多嚼不烂
    • ❌ 一开始就学Django/机器学习
    • ✅ 先专注测试相关库:Selenium, Requests, Pytest
  2. 不写注释

    • ❌ 三个月后自己都看不懂代码
    • ✅ 像这样写注释: python:
      1. # 检查登录是否成功(返回True/False)
      2. def check_login():
      3. return "欢迎页" in driver.page_source
  3. 不会调试

    • ❌ 满屏print(“到这里了”)
    • ✅ 用断点调试:VSCode里按F5,PyCharm点左边行号加红点
  4. 闭门造车
    • ❌ 自己闷头写
    • ✅ 去GitHub搜”python automation testing”参考明星项目
  5. 不处理异常
    • ❌ 网络一波动脚本就崩溃
    • ✅ 加try-catch保命:

python:

  1. try:
  2. driver.find_element("id", "不存在的按钮").click()
  3. except Exception as e:
  4. print(f"元素找不到!错误信息:{e}")

四、真实工作流示例

用Python解放双手:

场景:每天要测试新用户注册功能
手工测试

  1. 打开浏览器 → 2. 填表单 → 3. 点提交 → 4. 检查数据库 → 重复50次 😫

Python自动化

python:

  1. import requests # 发HTTP请求
  2. import pymysql # 连数据库
  3. def test_register():
  4. # 1. 调用注册接口
  5. url = "https://api.com/register"
  6. data = {"username": "test", "password": "123456"}
  7. res = requests.post(url, json=data)
  8. # 2. 断言接口返回
  9. assert res.status_code == 200
  10. assert res.json()["success"] == True
  11. # 3. 检查数据库
  12. db = pymysql.connect("localhost", "test", "test", "db")
  13. cursor = db.cursor()
  14. cursor.execute("SELECT * FROM users WHERE username='test'")
  15. assert cursor.fetchone() is not None # 确保数据库有记录
  16. print("注册测试通过!")
  17. # 想测多少次就调用多少次
  18. test_register()