Skip to main content

API 测试的 Swagger 覆盖率

项目描述

大摇大摆的报道

测试 版本 可维护性 测试覆盖率 PyPI 版本 下载

关于

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.tar.gz (17.8 kB 图哈希)

已上传 source

内置分布

test_swagger_coverage-0.1.38-py3-none-any.whl (19.1 kB 查看哈希

已上传 py3