API 测试的 Swagger 覆盖率
项目描述
大摇大摆的报道
关于
Swagger 覆盖率报告可帮助 QA 自动化和开发人员为端点测试获取简单的 API 覆盖率报告
安装
您可以test-swagger-coverage通过pip_ 从PyPI_::安装
$ pip install test-swagger-coverage
或与诗歌
$ poetry add test-swagger-coverage
这个怎么运作
我们将 swagger 作为测试覆盖率的数据,并基于它创建一个文件,该文件将作为我们的测试设置。该文件可以自动或手动创建。
接下来,我们在测试中设置 api 调用(我们用装饰器包装它们,参见示例),并在测试结束时生成 html 报告。我们将检查调用了哪些端点以及我们检查了哪些状态。
我们不能总是相信我们的招摇,所以你可以自己手动设置代码的状态,需要检查。
例子
首先,我们需要一个指向您的招摇的链接。例如,让我们以这个 https://app.swaggerhub.com/apis-docs/berpress/flask-rest-api/1.0.0为例(查看更多关于这个 api https://github.com/berpress/flask-restful -api ),并将 url 带到 yaml/yml/json swagger 文件 - https://api.swaggerhub.com/apis/berpress/flask-rest-api/1.0.0
接下来,在我们的项目中,我们需要创建一个描述端点的文件,我们的测试将使用它来生成覆盖率报告。
我们可以通过命令行自动完成
$ swagger_coverage https://api.swaggerhub.com/apis/berpress/flask-rest-api/1.0.0
结果
$ 2022-04-15 11:22:37 INFO Start load swagger https://api.swaggerhub.com/apis/berpress/flask-rest-api/1.0.0
$ 2022-04-15 11:22:38 INFO The swagger report was successfully saved to the folder: /Users/user/Documents/git/python-api-tests/swagger_report
swagger_report目录将被创建,里面会出现一个data_swagger.yaml文件,这将是构建测试覆盖率报告的设置
data_swagger.yaml文件看起来像这样
...
regUser:
description: null
method: POST
path: /register
statuses:
- 201 <---- change from 200 to 201
- 400
- 401
- 403
tag: register
...
其中regUser是我们端点的唯一 ID
statuses是我们将检查的状态列表(它们被调用)。您可以自己自定义此列表。
只有我们会检查 201 状态,如用户注册招摇中所述。所以我会添加它。
让我们创建一个简单的测试并构建一个报告。对于请求,您将使用requests库。
import requests
from swagger_coverage.src.coverage import SwaggerCoverage
from swagger_coverage.src.deco import swagger
# swagger data preparation
swagger_url = "https://api.swaggerhub.com/apis/berpress/flask-rest-api/1.0.0"
api_url = "https://api.swaggerhub.com/apis/"
path='/report' # path to swagger coverage report
swagger_rep = SwaggerCoverage(api_url=api_url, url=swagger_url, path=path)
swagger_rep.create_coverage_data()
# function to call a request to the server
@swagger("regUser")
def register_user(payload: dict):
return requests.post('https://stores-tests-api.herokuapp.com/register',
json=payload)
# test
data = {"username": "test2023@test.com", "password": "Password"}
response = register_user(data)
assert response.status_code == 201
# create report
swagger_rep.create_report()
swagger 数据准备:准备我们的文件 data_swagger.yaml,它会自动创建。
调用服务器请求的函数:我们将编写一个用户注册调用。用装饰器@swagger("regUser")声明一个函数。 “regUser”取自文件data_swagger.yaml,这是我们端点的唯一 ID。
测试:运行测试
创建报告:创建报告。
之后,在swagger_report文件夹中,我们将收到一个报告index.html。
让我们来看看它
如您所见,我们增加了已验证端点的计数器
如果您使用pytest,请将此代码添加到 conftest.py
@pytest.fixture(scope="session", autouse=True)
def swagger_checker(request):
url = request.config.getoption("--swagger-url")
url_api = request.config.getoption("--api-url")
path = '/report'
swagger = SwaggerCoverage(api_url=url_api, url=url, path=path)
swagger.create_coverage_data()
yield
swagger.create_report()
pytest 和 API 测试的更多示例https://github.com/berpress/python-api-tests
报告示例https://github.com/berpress/python-api-tests/tree/main/swagger_report
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
test_swagger_coverage -0.1.38-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 026329ab657141c95576788e99d36675dd309e84b8c01ad00b1bc6856341a08d |
|
| MD5 | 47156d2f2fd6c1d37a132a06d9569459 |
|
| 布莱克2-256 | 501a744675bb498d6f23d58299ec9cd5a1254183f96e941fef52c2d6f1024a19 |