为了工作需要,开发一个接口自动化测试框架,你可以结合Python的requests库用于发送HTTP请求,pandas库用于处理Excel数据,以及适当的断言方法来验证测试结果。以下是一个简单的框架,主要是为了实现将测试数据和测试结果统一写在同一个excel里面。
在这个框架中,需要创建一个Excel文件来存储测试数据,其中包括每个测试用例的URL、方法、请求头、负载、期望的状态码和期望的响应内容。
然后,使用read_test_data
函数读取Excel文件并将数据存储在数据框中。
run_test_case
函数执行单个测试用例,发送HTTP请求并进行断言验证。
最后,run_test_suite
函数执行测试套件中的所有测试用例。
import requests
import pandas as pd
def read_test_data(file_path):
"""
读取测试数据Excel文件,并返回数据框
"""
return pd.read_excel(file_path)
def run_test_case(test_case):
"""
执行单个测试用例
"""
url = test_case['URL']
method = test_case['Method']
headers = test_case['Headers']
payload = test_case['Payload']
expected_status_code = test_case['Expected_Status_Code']
expected_response = test_case['Expected_Response']
response = requests.request(method, url, headers=headers, json=payload)
# 断言状态码
assert response.status_code == expected_status_code, f"Expected status code {expected_status_code}, but got {response.status_code}"
# 断言响应内容
assert response.json() == expected_response, f"Expected response {expected_response}, but got {response.json()}"
def run_test_suite(test_data):
"""
执行测试套件中的所有测试用例
"""
for index, test_case in test_data.iterrows():
print(f"Running test case {index + 1}")
run_test_case(test_case)
print(f"Test case {index + 1} passed!")
if __name__ == "__main__":
test_data_file = "test_data.xlsx"
test_data = read_test_data(test_data_file)
run_test_suite(test_data)
这个测试框架还缺少两部分:
1,测试报告的优化
2,参数化和关联的设置(如何在excel表里面设置参数化和关联)
后期会持续优化,主要是加上以上两个功能