✅ 1. 接口测试脚本(Requests + JSON)

使用 requests 发起 HTTP 请求,验证接口状态码和返回内容。


  1. import requests

  2. import json

  3. def test_api(url, method='get', headers=None, params=None, payload=None):

  4. try:

  5. if method.lower() == 'get':

  6. response = requests.get(url, params=params, headers=headers)

  7. elif method.lower() == 'post':

  8. response = requests.post(url, json=payload, headers=headers)

  9. else:

  10. raise ValueError("不支持的请求方法")

  11. print(f"请求地址: {response.url}")

  12. print(f"状态码: {response.status_code}")

  13. print(f"响应内容: {json.dumps(response.json(), indent=2)}")

  14. return response

  15. except Exception as e:

  16. print(f"请求失败: {e}")

  17. return None

  18. # 示例调用

  19. if __name__ == "__main__":

  20. url = "https://jsonplaceholder.typicode.com/posts"

  21. res = test_api(url, method='get')‍

运行本项目

✅ 2. 数据驱动测试脚本(DDT)

使用 ddt 模块实现参数化测试,适用于多组测试数据的接口或功能验证。


  1. import unittest

  2. from ddt import ddt, data, unpack

  3. @ddt

  4. class TestLogin(unittest.TestCase):

  5. @data(

  6. ("admin", "123456", True),

  7. ("guest", "wrongpass", False),

  8. ("", "", False)

  9. )

  10. @unpack

  11. def test_login(self, username, password, expected):

  12. result = self.login(username, password)

  13. self.assertEqual(result, expected)

  14. def login(self, username, password):

  15. # 模拟登录逻辑

  16. return username == "admin" and password == "123456"

  17. if __name__ == '__main__':

  18. unittest.main()

运行本项目

📌 安装依赖:

pip install ddt‍

✅ 3. UI 自动化测试脚本(Selenium)

使用 selenium 实现浏览器自动化操作,适用于 Web 页面测试。


  1. from selenium import webdriver

  2. from selenium.webdriver.common.by import By

  3. import time

  4. driver = webdriver.Chrome()

  5. try:

  6. driver.get("https://www.example.com/login")

  7. driver.find_element(By.ID, "username").send_keys("testuser")

  8. driver.find_element(By.ID, "password").send_keys("password123")

  9. driver.find_element(By.ID, "login-btn").click()

  10. time.sleep(2) # 等待页面加载

  11. assert "欢迎页" in driver.title

  12. print("登录测试通过")

  13. finally:

  14. driver.quit()

运行本项目

📌 安装依赖:

pip install selenium

注意:需要安装对应的浏览器驱动(如 ChromeDriver)并添加到系统路径。

✅ 4. 性能测试脚本(Locust)

使用 locust 编写性能测试脚本,模拟并发用户访问接口。


  1. from locust import HttpUser, task, between

  2. class WebsiteUser(HttpUser):

  3. wait_time = between(1, 3) # 用户等待时间 1~3 秒

  4. @task

  5. def load_homepage(self):

  6. self.client.get("/")

  7. @task(3)

  8. def get_posts(self):

  9. self.client.get("/posts")

运行本项目

📌 运行方式:

locust -f locustfile.py

📌 安装依赖:

pip install locust‍

✅ 5. 日志记录模块(logging)

统一日志输出格式,便于调试和分析测试过程。


  1. import logging

  2. import os

  3. # 创建 logs 目录

  4. os.makedirs("logs", exist_ok=True)

  5. # 配置日志

  6. logging.basicConfig(

  7. level=logging.INFO,

  8. format='%(asctime)s [%(levelname)s] %(message)s',

  9. handlers=[

  10. logging.FileHandler("logs/test.log"),

  11. logging.StreamHandler()

  12. ]

  13. )

  14. logger = logging.getLogger(__name__)

  15. # 示例使用

  16. logger.info("开始执行测试...")

  17. logger.warning("这是一个警告信息")

  18. logger.error("这是一个错误信息")‍

运行本项目

✅ 6. HTML 报告生成(Pytest + Allure)

结合 pytest 和 allure-pytest 生成美观的 HTML 测试报告。

示例脚本:


  1. import pytest

  2. def add(a, b):

  3. return a + b

  4. @pytest.mark.parametrize("a, b, expected", [(1, 1, 2), (2, 3, 5), (-1, 1, 0)])

  5. def test_add(a, b, expected):

  6. assert add(a, b) == expected

  7. 📌 执行命令生成报告:

  8. pytest --alluredir=./allure-results test_add.py

  9. allure serve ./allure-results

运行本项目

📌 安装依赖:

pip install pytest allure-pytest

需要安装 Allure 命令行工具

✅ 7. CSV 文件读取与测试数据处理

用于从 CSV 中读取测试数据,常用于接口测试、数据驱动测试。


  1. import csv

  2. def read_test_data(file_path):

  3. with open(file_path, newline='', encoding='utf-8') as csvfile:

  4. reader = csv.DictReader(csvfile)

  5. for row in reader:

  6. yield row

  7. for data in read_test_data('testdata.csv'):

  8. print(data['username'], data['password'])

运行本项目

CSV 文件示例(testdata.csv):

username,password

testuser1,123456

testuser2,wrongpass

,testempty‍

✅ 8. 邮件通知脚本(SMTP)

测试完成后发送邮件通知测试结果。


  1. import smtplib

  2. from email.mime.text import MIMEText

  3. from email.header import Header

  4. def send_email(subject, content, to_emails):

  5. msg = MIMEText(content, 'plain', 'utf-8')

  6. msg['Subject'] = Header(subject, 'utf-8')

  7. msg['From'] = "your_email@example.com"

  8. msg['To'] = ", ".join(to_emails)

  9. try:

  10. server = smtplib.SMTP("smtp.example.com", 587)

  11. server.starttls()

  12. server.login("your_email@example.com", "your_password")

  13. server.sendmail(msg['From'], to_emails, msg.as_string())

  14. print("邮件发送成功")

  15. except Exception as e:

  16. print("邮件发送失败:", e)

  17. finally:

  18. server.quit()

  19. # 示例调用

  20. send_email("自动化测试完成", "本次测试共执行了 10 条用例,全部通过。", ["dev@example.com"])

运行本项目

✅ 9. Git 操作脚本(自动化拉取代码)

在 CI/CD 中自动拉取最新代码进行测试。


  1. from git import Repo

  2. def pull_latest_code(repo_path):

  3. repo = Repo(repo_path)

  4. origin = repo.remotes.origin

  5. origin.pull()

  6. print(f"已更新到最新版本,当前分支: {repo.active_branch}")

  7. # 示例调用

  8. pull_latest_code("/path/to/your/repo")

运行本项目

📌 安装依赖:

pip install gitpython‍

✅ 10. 测试覆盖率统计(coverage.py)

统计测试代码对源码的覆盖情况。


  1. coverage run -m pytest test_my_module.py

  2. coverage report -m

  3. coverage html

运行本项目

📌 安装依赖:

pip install coverage‍

📌 小结:常用脚本分类表

图片

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

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

Logo

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

更多推荐