烟雾测试工具
项目描述
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 |