测试用例文档通过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
导入操作更倾向于顶层的测试组件,该组件可以运行在多数独立、完全隔离的测试集中。只要不依赖变量来存储这些信息,它们也可以用于创建示例数据或执行清理。例如:一个创建用户的测试场景,该测试场景依赖用户ID,然而用户ID在开始需要通过查询的API来获取,就可以在创建用户的测试文件中,导入查询用户ID接口文件。
url、config、test语法示例
一个简单的URL测试等同于对该URL进行一个简单的GET请求测试。
---
- 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选项
作为更高一级的测试用例(如: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”