严谨
rigor的Python项目详细描述
Rigor
是一种特定于域的语言(dsl)和命令行界面(cli)
用于发出http请求、提取数据和验证响应。主要
严谨的目的是成为一个基于http的api(例如rest)测试框架,用于
自动化功能或集成测试。
要求
- python 3.6
安装
使用pip3
安装…
pip3 install rigor
功能列表
- 无需编写粘合代码的功能测试。(例如黄瓜)
- 以同步(requests)或异步(aiohttp)模式运行。
- 基于yaml的测试用例文件格式,便于创建和维护测试。
- 使用jmespath.py来减少测试脆弱性的响应转换。
- 使用cucumber-sandwich生成漂亮的html测试执行报告。
- Swagger路径覆盖率报告,以确保api表面积覆盖率。
- 语法使用structlog突出显示控制台或基于json的日志记录。
- 用于在不同环境和设置之间切换的配置文件。
- 用于有选择地执行测试套件子集的标记和cli选项。
- 场景大纲(即表格),适用于具有多种场景的情况。
- 漂亮的soup解析,用于从html数据提取。
- 正确的错误代码($?)套房成功(0)或失败(!0)
- 案例场景唯一标识符(uuid)用于管理会话和竞争条件。
命令行界面(cli)选项
$ rigor --help
Usage: rigor [OPTIONS] [PATHS]...
Options:
--profile TEXT Profile name (e.g. test)
--host TEXT Host name (e.g. http://localhost:8000)
-i, --includes TEXT Include tag of cases. (e.g. smoke)
-e, --excludes TEXT Exclude tag of cases to run. (e.g. broken)
-p, --prefixes TEXT Filter cases by file prefix. (e.g. smoke_)
-e, --extensions TEXT Filter cases by file extension. (e.g. rigor)
-c, --concurrency INTEGER # of concurrent HTTP requests. (default: 5)
-o, --output TEXT Report output folder.
-q, --quiet Run in quiet mode. (warning/critical level only)
-v, --verbose Run in verbose mode. (debug level logging)
-j, --json JSON-style logging.
-h, --html Generate HTML report.
-g, --coverage Generate Coverage report.
--help Show this message and exit.
简单示例
(rigor) /p/tmp> cat test.rigor
name: Simple case.
steps:
- description: Simple step.
request:
host: https://httpbin.org
path: get
(rigor) /p/tmp> rigor test.rigor --html
2018-02-08 13:18.06 [info ] no config file not found [rigor] paths=('test.rigor',)
2018-02-08 13:18.06 [info ] collecting tests [rigor] cwd=/private/tmp paths=['test.rigor']
2018-02-08 13:18.06 [info ] tests collected [rigor] queued=1 skipped=0
2018-02-08 13:18.06 [info ] execute suite complete [rigor] failed=0 passed=1 timer=0.119s
2018-02-08 13:18.07 [info ] launching browser [rigor] report_path=/var/folders/b_/2hlrn_7930x81r009mfzl50m0000gn/T/tmps_8d7nn_/html-2018-02-08-08-18-06/cucumber-html-reports/cucumber-html-reports/overview-features.html
对象模型
- 套件:一组基于cli参数动态构建的案例。
- case:一个.rigo文件中的一组场景和步骤。
- 场景:一次运行案例步骤的命名空间。
- 步骤:请求和响应提取、验证等。
- 迭代:通过迭代iterable来重复单个步骤。
- 请求:使用参数、数据或上载对path进行http调用(get、post等)
- 提取:将响应中的嵌套数据提取到变量中,该变量可用于以下步骤。
- 验证:使用比较器根据预期值检查实际值。
- 转换:使用jmespath将json响应形成特定格式。
比较器
每个步骤的验证阶段都使用比较器来检查 实际值按预期返回。参见comparisons.rigor示例 更多细节。
- 等于
- 不等于
- 相同
- 不一样
- 大于
- 小于
- 大于或等于
- 小于或等于
- 键入
- 在
- 不在
- 正则表达式
- 子集
- 非子集
- 长度
- 超集
- 不是超集
- 键集
- 不是键集
- 包含
- 不包含
相关项目
- Tavern是一个非常相似的项目,发布的时间有点晚,我们无法使用。
- Pyresttest是我们决定推出自己的测试框架之前使用的第一个库。
- Click是用于构建命令行选项的库。
- Related是用于将yaml测试套件解析为python对象模型的库。
更多示例
查看此项目的tests/httpbin/文件夹可以找到更多示例。
许可证
麻省理工学院执照(MIT) 版权所有(C)2017Ian Maurer,Genomoncology LLC