Python中接口测试产生的数据如何处理与存储?
各位大神,用 python 测试接口新增入库的数据,我想删除这些数据让数据数据库恢复到初始状态这个该怎么做呢??谢谢
Python中接口测试产生的数据如何处理与存储?
11 回复
删库。。重建。。
在Python接口测试中,处理与存储数据主要看你的测试框架和需求。我用得最多的是pytest,数据管理大概分这么几种情况:
1. 测试数据管理
# 用fixture管理测试数据
import pytest
import requests
@pytest.fixture
def test_user():
return {"username": "test_user", "password": "test123"}
def test_login(test_user):
response = requests.post("http://api.example.com/login", json=test_user)
assert response.status_code == 200
2. 响应数据验证
def test_api_response():
response = requests.get("http://api.example.com/users")
data = response.json()
# 验证数据结构
assert isinstance(data, list)
assert "id" in data[0]
assert "name" in data[0]
return data # 可以返回供后续测试使用
3. 数据存储方案
import json
import csv
import sqlite3
from datetime import datetime
class TestDataHandler:
def __init__(self):
self.timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
def save_to_json(self, data, test_name):
filename = f"test_results/{test_name}_{self.timestamp}.json"
with open(filename, 'w') as f:
json.dump(data, f, indent=2)
def save_to_csv(self, data, test_name):
filename = f"test_results/{test_name}_{self.timestamp}.csv"
if isinstance(data, list) and data:
keys = data[0].keys()
with open(filename, 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=keys)
writer.writeheader()
writer.writerows(data)
def save_to_sqlite(self, data, test_name):
conn = sqlite3.connect('test_results.db')
cursor = conn.cursor()
# 创建表(如果不存在)
cursor.execute(f'''
CREATE TABLE IF NOT EXISTS {test_name} (
id INTEGER PRIMARY KEY,
timestamp TEXT,
data TEXT
)
''')
# 插入数据
cursor.execute(f'''
INSERT INTO {test_name} (timestamp, data)
VALUES (?, ?)
''', (self.timestamp, json.dumps(data)))
conn.commit()
conn.close()
# 使用示例
handler = TestDataHandler()
test_data = [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]
handler.save_to_json(test_data, "user_api_test")
4. 实际测试中的整合
import pytest
import requests
@pytest.fixture(scope="session")
def data_handler():
return TestDataHandler()
def test_complete_flow(data_handler):
# 准备测试数据
payload = {"query": "test"}
# 发送请求
response = requests.post("http://api.example.com/search", json=payload)
result = response.json()
# 验证响应
assert response.status_code == 200
assert "results" in result
# 存储测试结果
data_handler.save_to_json(result, "search_api_test")
# 返回数据供断言或其他测试使用
return result
简单建议:根据测试需求选择合适的数据存储方式,JSON文件最常用。
emmm,一般来说,让开发重新部署个测试库啊,你拿开发库做测试,这不摆明了三字儿“我想死”
自己不做备份?
🐮啊,兄弟
用 truncate 清空?
不做开发环境的?
开启事务
事物和 LZ 这个没关系吧
楼主是要想还原到数据库除了原始数据之外什么都没有的状态
这个应该找开发重新部署数据库
删库跑路
测试库做啊,直接进正式库,说实话,在下佩服

