大家好,我是阿萨。昨天写了很多可用的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
这只是一个基本的框架,您可以根据您的项目需求进行扩展和优化。