严谨

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

list

detail

对象模型

  • 套件:一组基于cli参数动态构建的案例。
  • case:一个.rigo文件中的一组场景和步骤。
  • 场景:一次运行案例步骤的命名空间。
  • 步骤:请求和响应提取、验证等。
  • 迭代:通过迭代iterable来重复单个步骤。
  • 请求:使用参数、数据或上载对path进行http调用(get、post等)
  • 提取:将响应中的嵌套数据提取到变量中,该变量可用于以下步骤。
  • 验证:使用比较器根据预期值检查实际值。
  • 转换:使用jmespath将json响应形成特定格式。

objects

比较器

每个步骤的验证阶段都使用比较器来检查 实际值按预期返回。参见comparisons.rigor示例 更多细节。

  • 等于
  • 不等于
  • 相同
  • 不一样
  • 大于
  • 小于
  • 大于或等于
  • 小于或等于
  • 键入
  • 不在
  • 正则表达式
  • 子集
  • 非子集
  • 长度
  • 超集
  • 不是超集
  • 键集
  • 不是键集
  • 包含
  • 不包含

相关项目

  • Tavern是一个非常相似的项目,发布的时间有点晚,我们无法使用。
  • Pyresttest是我们决定推出自己的测试框架之前使用的第一个库。
  • Click是用于构建命令行选项的库。
  • Related是用于将yaml测试套件解析为python对象模型的库。

更多示例

查看此项目的tests/httpbin/文件夹可以找到更多示例。

许可证

麻省理工学院执照(MIT) 版权所有(C)2017Ian MaurerGenomoncology LLC

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Rest DSL路由无法启动路由,因为同一端点不允许有多个使用者   jvm有没有像JConsole或VisualVM这样的工具可以告诉我“类、对象、引用变量在java中存储在哪里?”   java为什么我的列表中的所有元素看起来都一样?   java运行时。运行shell脚本的exec无法打开文件   JPopupMenu的JMenuItem的java热键   会话在Java中被覆盖   如何在java中去除字符串中的尖锐重音?   java Mockito监视一个接口,模拟它的默认方法,获取NullPointerException   javascript如何在jquery中禁用同一时间选择   将数组列表附加到现有CSV文件,但它会附加并清除存储在Java文件中的以前的数据   java从我的jar中访问pdf文件   java Sonar issue参数必须为非Null,但标记为可为Null   java Salesforce流式API:在网络故障之后和重新订阅之前获取事件   在Java 1.8.0_65上运行Play2.0应用程序时出现playframework错误   java为什么字母的ASCII由方法自动转换。toCharArray()?   java如何知道JDialog是否关闭?   java向服务器发送POST请求,服务器的响应为null,启动   java如何设置JTable中特定单元格的值?   ImagePlus中的java保存问题