一个数据驱动的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


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

相关文章
|
23天前
|
数据可视化 数据管理 测试技术
聊聊自动化测试框架
关于自动化测试框架的一些理解和思考总结,就是上面这些内容,提到的一些框架组件可能存在不合理的地方,仅供参考,如有更好的建议,请指出,不胜感激
25 4
聊聊自动化测试框架
|
3天前
|
Web App开发 敏捷开发 数据管理
自动化测试框架的设计与实现
【9月更文挑战第32天】在软件开发的海洋中,自动化测试如同一艘精确导航的船只,确保我们的应用程序能够在波涛汹涌的技术潮流中稳健航行。本文将带你领略自动化测试框架的设计之美,从搭建基础到功能扩展,再到维护实践,我们将一起探索如何打造一个既高效又灵活的自动化测试体系。
|
19天前
|
敏捷开发 IDE 测试技术
自动化测试框架的选择与应用
【9月更文挑战第16天】在软件开发周期中,测试环节扮演着至关重要的角色。随着敏捷开发和持续集成的流行,自动化测试成为提升软件质量和效率的关键手段。本文将探讨如何根据项目需求选择合适的自动化测试框架,并通过实际案例分析展示其在软件开发过程中的应用。我们将从单元测试、集成测试到端到端测试等多个层面,讨论自动化测试的最佳实践和常见问题解决策略。
|
8天前
|
JSON Go API
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
|
9天前
|
敏捷开发 Java 测试技术
自动化测试框架的选择与应用
【9月更文挑战第26天】在软件开发的海洋里,自动化测试是那一盏指路明灯。它不仅加快了开发周期,还提升了软件质量。本文将带你探索自动化测试框架的世界,了解它们的核心特性、适用场景及如何根据项目需求做出明智选择。让我们一起启航,找到那把打开高效、稳定软件生产大门的钥匙。
|
9天前
|
敏捷开发 数据管理 测试技术
自动化测试框架的设计与实现
【9月更文挑战第25天】 本文将引导读者深入理解自动化测试框架的核心概念,并展示如何从零开始构建一个简单且有效的自动化测试框架。通过通俗易懂的语言和实际代码示例,我们将探讨测试框架设计的关键步骤、实现方法以及常见问题的解决方案。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
11天前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
|
11天前
|
开发框架 JSON 缓存
震撼发布!Python Web开发框架下的RESTful API设计全攻略,让数据交互更自由!
在数字化浪潮推动下,RESTful API成为Web开发中不可或缺的部分。本文详细介绍了在Python环境下如何设计并实现高效、可扩展的RESTful API,涵盖框架选择、资源定义、HTTP方法应用及响应格式设计等内容,并提供了基于Flask的示例代码。此外,还讨论了版本控制、文档化、安全性和性能优化等最佳实践,帮助开发者实现更流畅的数据交互体验。
32 1
|
14天前
|
JSON 资源调度 JavaScript
Vue框架中Ajax请求的实现方式:使用axios库或fetch API
选择 `axios`还是 `fetch`取决于项目需求和个人偏好。`axios`提供了更丰富的API和更灵活的错误处理方式,适用于需要复杂请求配置的场景。而 `fetch`作为现代浏览器的原生API,使用起来更为简洁,但在旧浏览器兼容性和某些高级特性上可能略显不足。无论选择哪种方式,它们都能有效地在Vue应用中实现Ajax请求的功能。
18 4
|
1月前
|
存储 Java 关系型数据库
“代码界的魔法师:揭秘Micronaut框架下如何用测试驱动开发将简单图书管理系统变成性能怪兽!
【9月更文挑战第6天】Micronaut框架凭借其轻量级和高性能特性,在Java应用开发中备受青睐。本文通过一个图书管理系统的案例,介绍了在Micronaut下从单元测试到集成测试的全流程。首先,我们使用`@MicronautTest`注解编写了一个简单的`BookService`单元测试,验证添加图书功能;接着,通过集成测试验证了`BookService`与数据库的交互。整个过程展示了Micronaut强大的依赖注入和测试支持,使测试编写变得更加高效和简单。
51 4
下一篇
无影云桌面