通过【PYRESTTEST】PYRESTTEST入门引导
进行模拟,应该能够体验到它的便捷。那么本章主要讲解它的语法格式。
测试用例文档通过YAML格式编写,所以文档会遵守YAML格式要求。在测试集文件中有5个顶级测试元素:

  • url: 一个简单接口请求,通过获取的url来验证GET请求并检验请求的状态码(200)。
  • test: 一个全量测试定义
  • benchmark: 一个全量的benchmark定义
  • config or configuration: 用于调整的默认测试选项至。
  • import: 可以导入其他测试文件,不需要重新编写相同文件。

Import 语法示例

---
# Will load the test sets from miniapp-test.yaml and run them
# Note that this will run AFTER the current test set is executed
# Also note that imported tests get a new Context: any variables defined will be lost between test sets
- import: examples/miniapp-test.yaml

Imports are intended to let you create top-level test suites that run many independent, isolated test scenarios (test sets).

导入操作更倾向于顶层的测试组件,该组件可以运行在多数独立、完全隔离的测试集中。只要不依赖变量来存储这些信息,它们也可以用于创建示例数据或执行清理。例如:一个创建用户的测试场景,该测试场景依赖用户ID,然而用户ID在开始需要通过查询的API来获取,就可以在创建用户的测试文件中,导入查询用户ID接口文件。

url、config、test语法示例

一个简单的URL测试等同于对该URL进行一个简单的GET请求测试
Also shows how to use the timeout option in testset config to descrease the default timeout from 10 seconds to 1.

---
- config:
    - testset: "Basic tests"
    - timeout: 1
- url: "/api/person/"  # This is a simple test
- test: 
    - url: "/api/person/"  # This does the same thing

上述示例文件:

  • 使用顶级元素config
    • testset:设置测试集的名称
    • timeout:设置超时时间,如果不指定该值,默认数值为10
  • 使用顶级元素url:指定测试的url接口,默认对接口进行get请求,并对响应状态码进行验证。
  • 使用test:
    • url:执行测试的url,当前示例功能与顶级url完成同样功能。

自定义HTTP选项

For advanced cases (example: SSL client certs), sometimes you will want to use custom Curl settings that don’t have a corresponding option in PyRestTest.

作为更高一级的测试用例(如:SSL),有时想使用自定义的Curl设置(该设置在PyRestTest中没有相关选项)。

如果想完成当前需求:在每次测试时,需要指定自定义Curl参数,该参数格式如下:curl_option_optionname,optionname是大小写敏感,该optionname是使用Curl Easy Option中去掉CURLOPT_之后的小写字母。例如:使用重定向次数最大为5的选项 (CURLOPT_FOLLOWLOCATION 、 CURLOPT_MAXREDIRS):

---
- test: 
    - url: "/api/person/1"
    - curl_option_followlocation: True
    - curl_option_maxredirs: 5  

PS:只对optionname进行验证,不对它们的值进行验证。

语法限制

  • 只要可能,YAML配置处理程序都会根据需要尝试转换变量类型。
  • 只有少数元素可以使用动态变量(url、header、request body、validator)
  • 模板非常有限(它只是进行简单的字符串替换)。
  • 一个警告:如果在同一个层级中同一个元素(例如URL)定义了两次,将使用最后一个值。
  • 不支持请求/响应上的“for-each”

1 对 “【PyRestTest】基本测试集编写语法”的想法;

发表评论

电子邮件地址不会被公开。