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.2.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

Swagger2Tests-1.2.2-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file Swagger2Tests-1.2.2.tar.gz.

File metadata

  • Download URL: Swagger2Tests-1.2.2.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.7

File hashes

Hashes for Swagger2Tests-1.2.2.tar.gz
Algorithm Hash digest
SHA256 ade2cb6cb36485d6021eaa399d5d403a6252506c1c5745619e1daaacfa2d172b
MD5 c835d69a52b12e8833b2efe8e4d82b29
BLAKE2b-256 61d6813167be8029d24c6976e0e64c3b846c86ded9ad6428ac5a921f6addbb04

See more details on using hashes here.

File details

Details for the file Swagger2Tests-1.2.2-py3-none-any.whl.

File metadata

  • Download URL: Swagger2Tests-1.2.2-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.7

File hashes

Hashes for Swagger2Tests-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6b74b2a156a3f9f73a291d4f52034c12f7711a2785f4f82abece3d9dca09dc98
MD5 f375a0ebe92a32f9498ab0ad838cad6f
BLAKE2b-256 1392b91f22d2e5579a65a7b71481db1f22bbce4914d58f0d437c0ebe4df40e1f

See more details on using hashes here.

Supported by

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