一个数据驱动的API测试框架

简介: 一个数据驱动的API测试框架

大家好,我是阿萨。昨天写了很多可用的python类库。今天针对数据驱动框架,写一个带源码的最简单的框架,只是示意代码,自己回去要修改的。


以下是一个简单的Python代码示例,演示如何创建一个数据驱动的API自动化测试框架,满足您的要求。请注意,这只是一个基本框架,您可以根据您的具体需求进行扩展和改进。

```python
import requests
import json
import csv
import unittest
from HTMLTestRunner import HTMLTestRunner
# 1. 从单独文件中读取配置数据
def read_test_data_from_csv(csv_file):
test_data = []
with open(csv_file, 'r', newline='') as file:
reader = csv.DictReader(file)
for row in reader:
test_data.append(row)
return test_data
# 2. 接口输入参数使用json或者csv
def run_api_test(data):
test_results = []
for test_case in data:
url = test_case['url']
method = test_case['method']
headers = json.loads(test_case['headers'])
payload = json.loads(test_case['payload'])
expected_response_code = int(test_case['expected_response_code'])
response = None
try:
if method == 'GET':
response = requests.get(url, headers=headers)
elif method == 'POST':
response = requests.post(url, headers=headers, json=payload)
# 检查响应状态码
if response.status_code == expected_response_code:
test_results.append({'test_case': test_case, 'result': 'Pass'})
else:
test_results.append({'test_case': test_case, 'result': 'Fail', 'reason': f'Expected {expected_response_code}, but got {response.status_code}'})
except Exception as e:
test_results.append({'test_case': test_case, 'result': 'Error', 'reason': str(e)})
return test_results
# 3. 输出结果使用html方式
def generate_html_report(test_results):
with open('test_report.html', 'w', encoding='utf-8') as file:
runner = HTMLTestRunner(stream=file, title='API Test Report', description='Test results for API tests')
runner.run(unittest.TestLoader().loadTestsFromTestCase(ApiTest))
# 4. 测试报告,要有统计测试用例失败以及失败原因
class ApiTest(unittest.TestCase):
def test_api(self):
test_data = read_test_data_from_csv('test_data.csv')
results = run_api_test(test_data)
for result in results:
self.assertEqual(result['result'], 'Pass', result.get('reason', ''))
if __name__ == '__main__':
unittest.main()
generate_html_report()
```


请确保已安装必要的库,如requests、json、csv、unittest以及HTMLTestRunner。您需要将测试数据保存在名为'test_data.csv'的CSV文件中,并根据您的实际API测试需求进行配置。此示例中的测试报告将生成为'test_report.html'文件。l


这只是一个基本的框架,您可以根据您的项目需求进行扩展和优化。

相关文章
|
26天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
81 8
|
9天前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
102 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
21天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
54 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
6天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
27 11
|
27天前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
44 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
|
8天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
38 10
|
8天前
|
供应链 监控 API
1688.item_search_shop API:开启电商数据新纪元
1688.item_search_shop API是阿里巴巴1688平台提供的核心接口之一,支持根据关键词搜索指定店铺的商品,并获取商品详情、图片、价格等信息。该API允许设定搜索结果排序方式,如按销量或价格排序,满足不同需求。开发者可将其集成到电商应用中,提升用户体验;市场分析人员可利用其进行趋势和竞争对手分析;供应链管理人员则能监控库存,优化策略。示例代码展示了如何使用Python调用该API,帮助开发者快速上手。这一API的推出标志着B2B电商领域商品搜索技术的重要进步,推动行业向更高效、智能的方向发展。
|
11天前
|
数据采集 数据可视化 前端开发
怎么通过API获取电竞赛事实时数据
选择合适的电竞数据API是开发电竞应用的关键。主流API包括OP.GG、Liquipedia、Stratz、Riot Games和熊猫比分,涵盖LOL、DOTA2等游戏的实时数据。注册并获取API密钥后,需仔细阅读文档,了解资源、请求方法、必需参数及响应格式。编写代码调用API时,注意优化请求频率,避免封禁。最后,通过Web界面或可视化工具展示数据,如React/D3.js、Tableau等。示例代码展示了如何使用熊猫比分API获取即将开始的比赛信息。
|
16天前
|
JSON API 数据格式
淘系等商品评论Json数据格式参考,API接口测试
通过以上示例和说明,你可以了解淘系商品评论的JSON数据结构和如何使用相关API接口获取评论数据。在实际操作中,你需要参考具体的API接口文档和开放平台的相关说明进行配置和调用。
|
17天前
|
测试技术 API 数据库
淘宝商品详情高级版 (item_get_pro)API如何测试
要测试淘宝商品详情高级版API(item_get_pro),需先阅读API文档,注册开放平台账号,创建应用获取密钥,搭建测试环境,选择测试工具。测试时设计用例,配置工具,发送请求,验证响应,记录日志。注意安全和数据格式。