如何使用swagger接口文档生成yaml文件用于自动化测试
时间: 2023-09-19 15:11:45 浏览: 171
Swagger 接口文档可以用于自动生成接口测试的 YAML 文件,具体步骤如下:
1. 在 Swagger UI 中找到要测试的接口,并点击 "Try it out" 按钮。
2. 填写测试需要的参数,并点击 "Execute" 按钮。
3. 点击 "Code" 按钮,选择 "Shell"。
4. 复制代码,并粘贴到一个文本编辑器中保存为 YAML 文件。
YAML 文件中包含了测试所需的请求参数、请求方法、请求头等信息,可以通过自动化测试工具读取并执行测试。
示例代码如下:
```python
import requests
import yaml
# Swagger 文档地址
SWAGGER_URL = 'http://your.swagger.host/swagger.json'
# 发送 GET 请求,获取 Swagger 文档
response = requests.get(SWAGGER_URL)
# 解析 Swagger 文档中的接口信息
if response.status_code == 200:
swagger_doc = response.json()
paths = swagger_doc.get('paths', {})
for path, methods in paths.items():
for method, info in methods.items():
# 获取接口的 URL
url = f'{SWAGGER_URL.rstrip("/")}{path}'
# 获取接口的请求方法
http_method = method.upper()
# 获取接口的请求参数
parameters = info.get('parameters', [])
# 获取接口的请求头部信息
headers = {}
if 'headers' in info:
for header in info['headers']:
headers[header['name']] = header['description']
# 构造测试用例
test_case = {
'name': f'{http_method} {url}',
'request':
{
'url': url,
'method': http_method,
'headers': headers,
'params': {}
}
}
# 将请求参数添加到测试用例中
if parameters:
for param in parameters:
if 'name' in param:
test_case['request']['params'][param['name']] = param.get('example')
# 将测试用例转换为 YAML 格式并输出到文件中
with open(f'{http_method}_{path.replace("/", "_")}.yml', 'w') as f:
yaml.dump(test_case, f, default_flow_style=False)
else:
print(f'Failed to get Swagger document. Status code: {response.status_code}')
```
在上述代码中,我们使用 `requests` 库向 Swagger 文档的 URL 发送 GET 请求,获取 Swagger 文档的 JSON 数据。然后,解析 JSON 数据,获取每个接口的 URL、请求方法、请求参数和请求头信息等信息。最后,根据接口信息构造测试用例,并将测试用例转换为 YAML 格式并输出到文件中。你可以根据需要对测试用例进行扩展和优化。
阅读全文