D09_用例中提取数据:content 响应实体提取案例
在 HttpRunner 中提取数据时,根据界定符的方式进行提取,涉及到的内容包括如下:
- ["status_code", "encoding", "ok", "reason", "url"]
- cookies
- elapsed
- headers
- ["body", "content", "text", "json"]
在 httprunner-2.5.5\httprunner\response.py 源码中可以看到,HttpRunner 会自动判断实体类型是否是 JSON 格式,如果不是则默认为文本格式。
也就意味着,即便返回的实体是文本格式,但是提取时使用 json 也是可行的。
elif top_query in ["body", "content", "text", "json"]:
try:
# 返回json类型响应实体
body = self.json
except exceptions.JSONDecodeError:
# 如果响应实体不是json类型,则返回text类型
body = self.text
案例:访问百度首页,返回的实体(HTML)内容:
<!DOCTYPE html><!--STATUS OK--><html><head> ..........
编写用例,提取响应实体并进行断言:
- config:
name: TestCase
- test:
name: TestStep -1
request:
url: https://www.baidu.com/
method: GET
headers:
User-Agent: 'ozilla/5.0 (Windows NT 6.1; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'
extract:
b1: headers # 提取整个响应头域,dict 类型
b2: body # 提取整个响应实体,百度首页返回时文本类型
b3: content # 提取整个响应实体
b4: text # 提取整个响应实体
b5: json # 提取整个响应实体
b6: body.5 # 提取整个响应头域文本中,序号为5的字符
validate:
- len_gt: [$b1, 5] # 验证 headers 中包括至少 5 个头域项
- contains: [$b2, kw] # 验证通过
- contains: [$b3, kw] # 验证通过
- contains: [$b4, kw] # 验证通过
- contains: [$b5, kw] # 验证通过
- eq: [$b6, T] # 验证通过