烟雾测试工具
项目描述
Smwogger (发音为smoger) 是一个用于Swagger的烟雾测试工具。
Smwogger的目标是提供一种快速简单的方法来使用服务的Swagger描述进行烟雾测试。
为了为您API添加烟雾测试,您有三个选项
在您的Swagger规范中添加一个
部分,描述您的烟雾测试场景。 有一个包含
部分的特定文件。 在您的Python脚本中使用将方法绑定到Swagger操作的API类。
使用x-smoke-test的示例
您可以通过指定Swagger规范URL(或文件的路径)来运行测试
$ smwogger smwogger/tests/shavar.yaml ..................
您可以使用-v显示正在执行的序列
$ smwogger -v smwogger/tests/shavar.yaml Scanning spec... OK This is project 'Shavar Service' Mozilla's implementation of the Safe Browsing protocol Version 0.7.0 Running Scenario 1:getHeartbeat... OK 2:getDownloads... OK 3:getDownloads... OK
如果您需要获取有关发送的请求和响应的更多详细信息,可以使用-vv选项来增加详细程度
$ smwogger -vv smwogger/tests/shavar.yaml Scanning spec... OK This is project 'Shavar Service' Mozilla's implementation of the Safe Browsing protocol Version 0.7.0 Running Scenario 1:getHeartbeat... GET https://shavar.somwehere.com/__heartbeat__ >>> HTTP/1.1 200 OK Content-Type: text/plain; charset=UTF-8 Date: Mon, 21 Nov 2016 14:03:19 GMT Content-Length: 2 Connection: keep-alive OK <<< OK 2:getDownloads... POST https://shavar.somwehere.com/downloads Content-Length: 30 moztestpub-track-digest256;a:1 >>> HTTP/1.1 200 OK Content-Type: application/octet-stream Date: Mon, 21 Nov 2016 14:03:23 GMT Content-Length: 118 Connection: keep-alive n:3600 i:moztestpub-track-digest256 ad:1 u:tracking-protection.somwehere.com/moztestpub-track-digest256/1469223014 <<< OK 3:getDownloads... POST https://shavar.somwehere.com/downloads Content-Length: 35 moztestpub-trackwhite-digest256;a:1 >>> HTTP/1.1 200 OK Content-Type: application/octet-stream Date: Mon, 21 Nov 2016 14:03:23 GMT Content-Length: 128 Connection: keep-alive n:3600 i:moztestpub-trackwhite-digest256 ad:1 u:tracking-protection.somwehere.com/moztestpub-trackwhite-digest256/1469551567 <<< OK
描述您的场景
通过提供要执行的操作序列及其operationId来描述场景。
对于每个操作,您可以通过提供状态码和一些头部信息的值来对响应进行一些断言。
YAML示例
x-smoke-test: scenario: - getSomething: request: params: foo: bar response: status: 200 headers: Content-Type: application/json - getSomethingElse response: status: 200 - getSomething response: status: 200
如果响应不符合,将引发断言错误。
发布数据
当您发布数据时,您可以在操作下的request键中提供请求体内容。
YAML示例
x-smoke-test: scenario: - postSomething: request: body: This is the body I am sending. response: status: 200
替换路径变量
如果您的某些路径正在使用swagger规范中定义的模板变量,您可以使用path选项
x-smoke-test: scenario: - postSomething: request: body: This is the body I am sending. path: var1: ok var2: blah response: status: 200
您还可以定义全局路径值,这些值将在格式化路径时被查找。在这种情况下,变量必须在顶层path部分中定义
x-smoke-test: path: var1: ok scenario: - postSomething: request: body: This is the body I am sending. path: var2: blah response: status: 200
变量
您可以从响应中提取值,以便在后续操作中使用,无论是替换路径模板中的变量还是创建一个主体。
例如,如果getSomething返回一个包含“foo”值的JSON字典,您可以通过在响应键内的vars部分中声明它来提取它
x-smoke-test: path: var1: ok scenario: - getSomething: request: body: This is the body I am sending. path: var2: blah response: status: 200 vars: foo: query: foo default: baz
Smwogger将使用查询值来了解在响应体中查找的位置并提取值。如果未找到值且提供了默认值,则变量将采用该值。
一旦变量设置,它将被Smwogger用于后续操作,用于替换路径模板中的变量或填充响应数据。
路径格式化是自动完成的。Smwogger首先查看操作中定义的变量,然后查看路径部分。
如果您想在体中使用变量,则需要使用${格式化}
x-smoke-test: path: var1: ok scenario: - getSomething: response: vars: foo: query: foo default: baz - doSomething: request: body: ${foo}
使用API
如果您的场景过于复杂,无法适应描述,则可以使用–test选项中的纯Python脚本。
Python脚本测试是一个包含场景函数的模块。该函数将被执行,并将获得API类的实例以及传递给smwogger客户端的参数。
函数需要是协程。示例
from smwogger.cli import console async def scenario(api, args): with console('Getting something', verbose=args.verbose): resp = await api.getSomething() assert resp.status == 200
如果您想自己处理所有内容,也可以使用纯Python脚本。
在下面的示例中,脚本打印出所有已发布的操作ID
import asyncio from smwogger import API async def print_operations(): async with API('http://petstore.swagger.io/v2/swagger.json') as api: print(api.operations) loop = asyncio.get_event_loop() try: loop.run_until_complete(print_operations()) finally: loop.close()
贡献者
由Tarek Ziade创建的项目 <tarek_AT_ziade.org>
按照出现顺序列出的贡献者
Lucas Cimon <lucas.cimon_AT_gmail.com>
版本
1.0 2017-03-28
初始版本。
项目详情
smwogger-1.0.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 15ad0ed73014edc1d3af2fc6c59de7d49829a040509b1d46329307ddc845f1f9 |
|
MD5 | 6c913cfd66349d34db0b9505ed918b82 |
|
BLAKE2b-256 | f09695e28e13be08ad328bfbf2301a0e81cdd30110ffeeb6ade3d6873487aee5 |