Python 测试开发常用脚本大全
运行本项目📌 安装依赖:pip install coverage
✅ 1. 接口测试脚本(Requests + JSON)
使用 requests 发起 HTTP 请求,验证接口状态码和返回内容。
-
import requests -
import json -
def test_api(url, method='get', headers=None, params=None, payload=None): -
try: -
if method.lower() == 'get': -
response = requests.get(url, params=params, headers=headers) -
elif method.lower() == 'post': -
response = requests.post(url, json=payload, headers=headers) -
else: -
raise ValueError("不支持的请求方法") -
print(f"请求地址: {response.url}") -
print(f"状态码: {response.status_code}") -
print(f"响应内容: {json.dumps(response.json(), indent=2)}") -
return response -
except Exception as e: -
print(f"请求失败: {e}") -
return None -
# 示例调用 -
if __name__ == "__main__": -
url = "https://jsonplaceholder.typicode.com/posts" -
res = test_api(url, method='get')
运行本项目
✅ 2. 数据驱动测试脚本(DDT)
使用 ddt 模块实现参数化测试,适用于多组测试数据的接口或功能验证。
-
import unittest -
from ddt import ddt, data, unpack -
@ddt -
class TestLogin(unittest.TestCase): -
@data( -
("admin", "123456", True), -
("guest", "wrongpass", False), -
("", "", False) -
) -
@unpack -
def test_login(self, username, password, expected): -
result = self.login(username, password) -
self.assertEqual(result, expected) -
def login(self, username, password): -
# 模拟登录逻辑 -
return username == "admin" and password == "123456" -
if __name__ == '__main__': -
unittest.main()
运行本项目
📌 安装依赖:
pip install ddt
✅ 3. UI 自动化测试脚本(Selenium)
使用 selenium 实现浏览器自动化操作,适用于 Web 页面测试。
-
from selenium import webdriver -
from selenium.webdriver.common.by import By -
import time -
driver = webdriver.Chrome() -
try: -
driver.get("https://www.example.com/login") -
driver.find_element(By.ID, "username").send_keys("testuser") -
driver.find_element(By.ID, "password").send_keys("password123") -
driver.find_element(By.ID, "login-btn").click() -
time.sleep(2) # 等待页面加载 -
assert "欢迎页" in driver.title -
print("登录测试通过") -
finally: -
driver.quit()
运行本项目
📌 安装依赖:
pip install selenium
注意:需要安装对应的浏览器驱动(如 ChromeDriver)并添加到系统路径。
✅ 4. 性能测试脚本(Locust)
使用 locust 编写性能测试脚本,模拟并发用户访问接口。
-
from locust import HttpUser, task, between -
class WebsiteUser(HttpUser): -
wait_time = between(1, 3) # 用户等待时间 1~3 秒 -
@task -
def load_homepage(self): -
self.client.get("/") -
@task(3) -
def get_posts(self): -
self.client.get("/posts")
运行本项目
📌 运行方式:
locust -f locustfile.py
📌 安装依赖:
pip install locust
✅ 5. 日志记录模块(logging)
统一日志输出格式,便于调试和分析测试过程。
-
import logging -
import os -
# 创建 logs 目录 -
os.makedirs("logs", exist_ok=True) -
# 配置日志 -
logging.basicConfig( -
level=logging.INFO, -
format='%(asctime)s [%(levelname)s] %(message)s', -
handlers=[ -
logging.FileHandler("logs/test.log"), -
logging.StreamHandler() -
] -
) -
logger = logging.getLogger(__name__) -
# 示例使用 -
logger.info("开始执行测试...") -
logger.warning("这是一个警告信息") -
logger.error("这是一个错误信息")
运行本项目
✅ 6. HTML 报告生成(Pytest + Allure)
结合 pytest 和 allure-pytest 生成美观的 HTML 测试报告。
示例脚本:
-
import pytest -
def add(a, b): -
return a + b -
@pytest.mark.parametrize("a, b, expected", [(1, 1, 2), (2, 3, 5), (-1, 1, 0)]) -
def test_add(a, b, expected): -
assert add(a, b) == expected -
📌 执行命令生成报告: -
pytest --alluredir=./allure-results test_add.py -
allure serve ./allure-results
运行本项目
📌 安装依赖:
pip install pytest allure-pytest
需要安装 Allure 命令行工具
✅ 7. CSV 文件读取与测试数据处理
用于从 CSV 中读取测试数据,常用于接口测试、数据驱动测试。
-
import csv -
def read_test_data(file_path): -
with open(file_path, newline='', encoding='utf-8') as csvfile: -
reader = csv.DictReader(csvfile) -
for row in reader: -
yield row -
for data in read_test_data('testdata.csv'): -
print(data['username'], data['password'])
运行本项目
CSV 文件示例(testdata.csv):
username,password
testuser1,123456
testuser2,wrongpass
,testempty
✅ 8. 邮件通知脚本(SMTP)
测试完成后发送邮件通知测试结果。
-
import smtplib -
from email.mime.text import MIMEText -
from email.header import Header -
def send_email(subject, content, to_emails): -
msg = MIMEText(content, 'plain', 'utf-8') -
msg['Subject'] = Header(subject, 'utf-8') -
msg['From'] = "your_email@example.com" -
msg['To'] = ", ".join(to_emails) -
try: -
server = smtplib.SMTP("smtp.example.com", 587) -
server.starttls() -
server.login("your_email@example.com", "your_password") -
server.sendmail(msg['From'], to_emails, msg.as_string()) -
print("邮件发送成功") -
except Exception as e: -
print("邮件发送失败:", e) -
finally: -
server.quit() -
# 示例调用 -
send_email("自动化测试完成", "本次测试共执行了 10 条用例,全部通过。", ["dev@example.com"])
运行本项目
✅ 9. Git 操作脚本(自动化拉取代码)
在 CI/CD 中自动拉取最新代码进行测试。
-
from git import Repo -
def pull_latest_code(repo_path): -
repo = Repo(repo_path) -
origin = repo.remotes.origin -
origin.pull() -
print(f"已更新到最新版本,当前分支: {repo.active_branch}") -
# 示例调用 -
pull_latest_code("/path/to/your/repo")
运行本项目
📌 安装依赖:
pip install gitpython
✅ 10. 测试覆盖率统计(coverage.py)
统计测试代码对源码的覆盖情况。
-
coverage run -m pytest test_my_module.py -
coverage report -m -
coverage html
运行本项目
📌 安装依赖:
pip install coverage
📌 小结:常用脚本分类表

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)