美文网首页
HttpRunner学习4--使用正则表达式提取数据

HttpRunner学习4--使用正则表达式提取数据

作者: wintests | 来源:发表于2019-11-05 21:00 被阅读0次

    前言

    在HttpRunner中,我们可通过extract提取数据,当响应结果为 JSON 结构,可使用 content 结合 . 运算符的方式,如 content.code,用起来十分方便,但如果响应结果为 text/html 结构时,便不能这么用了。

    这时候,我们能不能使用正则表达式来提取呢?答案是肯定的。

    本人环境:HttpRunner V1.5.8

    测试场景

    在这里,我将访问 TesterHome 的首页,通过正则表达式来提取响应数据中的 title标题 ,下面是在浏览器中访问和Fiddler抓包的结果。

    访问TesterHome Fiddler抓包

    extract中正则提取和断言

    从上面的抓包结果中,我们如果要提取 标题title 中的 TesterHome 关键字,可以使用正则表达式为:<title>(.+?)</title>。YAML格式的用例如下:

    - test:
        name: visit TesterHome
        request:
          url: https://testerhome.com/
          method: GET
        extract:
          - title: <title>(.+?)</title>
        validate:
          - eq: [status_code, 200]
          - eq: [$title, "TesterHome"]
    

    使用正则提取的数据,放入参数 title 中,如果后面需要用到该参数,则通过 $title 来引用。

    validate中使用正则

    除了在 extract 提取响应数据时使用正则,我们也可以直接在断言时使用正则。YAML格式的用例如下:

    - test:
        name: visit TesterHome 2
        request:
          url: https://testerhome.com/
          method: GET
        validate:
          - eq: [status_code, 200]
          - eq: ['<title>(.+?)</title>', "TesterHome"]
    

    我在这里使用正则时,若直接用 <title>(.+?)</title> 会报错,我们加上 单引号或双引号 即可,如 '<title>(.+?)</title>'"<title>(.+?)</title>"

    完整的用例:

    - config:
        name: re test
    
    - test:
        name: visit TesterHome
        request:
          url: https://testerhome.com/
          method: GET
        extract:
          - title: <title>(.+?)</title>
        validate:
          - eq: [status_code, 200]
          - eq: [$title, "TesterHome"]
    
    - test:
        name: visit TesterHome 2
        request:
          url: https://testerhome.com/
          method: GET
        validate:
          - eq: [status_code, 200]
          - eq: ['<title>(.+?)</title>', "TesterHome"]
    

    相关文章

      网友评论

          本文标题:HttpRunner学习4--使用正则表达式提取数据

          本文链接:https://www.haomeiwen.com/subject/vvfvvctx.html