D09_用例中提取数据:content 响应实体提取案例

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]          # 验证通过

发布了30 篇原创文章 · 获赞 0 · 访问量 224

猜你喜欢

转载自blog.csdn.net/weixin_42007999/article/details/105718994