严谨

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 JPanel不会对键绑定做出反应   当时间大于零时,不得在UI线程上调用java Await   JTextArea的java线程安全。追加   Java用户输入的字和行计数器   java以spreedsheat格式将数据保存到文件中   java构造函数的意义是什么?   java findViewById返回null,尽管组件的ID存在   java如何向按钮添加图像   java如何中断ExecutorService的线程   java如何将属性(例如枚举)绑定到不同类型的组件属性(例如每个枚举的映像)?   随机森林分类器的java实现   html使用java连接到一个站点并发布,HTTP状态代码200   从类访问属性时发生java编译错误   Java自动填充ArrayList,搜索更好的选项