Skip to main content

swagger

Project description

生成pytest用例

install

python3 -m venv .myenv
source .myenv/bin/activate
#deactivate 退出

1. 初始化

Swagger2Tests --init --target='./'

初始化项目时会在指定的target目录,初始化项目,并且生成一些基础文件。

  • constants 可配置一些公共参数 比如 domain等
  • helpers 一些通用方法
  • templates 生成模板,可进行自定义修改

生成测试文件

Swagger2Tests --swagger='https://swagger.json' --target='./'
  • swagger 参数支持文件和url

当前会按请求参数类型,一次性生成固定值,如果需要每次请求都动态更改,则可以在文件里进行修改,使用Helper类的方法

    def test_chargingUsingPOST(self):
        # 计算费用
        requestBody = {
            "appid": REQUEST_APPID,
            "bizContent": {
                'amount': Helper.get_random_float(),
                'gasId': 'string',
                'gunNo': Helper.get_random_int(),
                'oilNo': Helper.get_random_int()
            },
            "sign": "string",
            "timestamp": Helper.get_random_datetime()
        }

用pytest 进行接口测试

  1. 在当前目录创建test_suits目录
  2. 在该目录内创建符合pytest扫描规则的测试文件,下面是个示例test_detail.py.
from apps.testCases.goods.items.DetailCase import *

class TestDetail:

    def test_detail(self):
        DetailCase.detailUsingGET()

以上只是一个示例,描述了对单个接口的测试。实际上,你可以处理接口返回,进行串联,模拟某个功能场景的测试集合。

  1. 编写pytest执行文件
import pytest

if __name__ == '__main__':
    pytest.main(['-s'])

执行单接口或场景接口集合测试

python3 pytest_main.py  
  • 使用pytest_main.py 执行的意义在于,避免有使用自定义包,因目录层级而存在的包导入问题

结合locust进行压力测试

  1. 编写locust用例文件
from locust import HttpUser,task
from locust.clients import LocustResponse
from apps.testCases.goods.items.DetailCase import *
from Swagger2Tests.helpers.helper import RequestInfo


class TestUser(HttpUser):

    min_wait = 5 * 1000
    max_wait = 10 * 1000


    @task
    def getGoodsDetail(self):
        r:RequestInfo = DetailCase.detailUsingGET(self.host)
        response:LocustResponse
        with self.client.request(r.request_method,r.request_path,
                            data=r.request_body,params=r.request_params,
                            catch_response =True
                            ) as response:
            if response.status_code == 200:
                response.success()
            else:
                response.failure("Request failed with status code: %s" % response.status_code)

development

  1. test
python3 -m tests.test_run --swagger='./tests/oil_detail.json'
  1. compile and deploy
python3 setup.py sdist bdist_wheel
twine upload dist/*   

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Swagger2Tests-1.2.1.tar.gz (12.6 kB view hashes)

Uploaded Source

Built Distribution

Swagger2Tests-1.2.1-py3-none-any.whl (14.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page