美文网首页程序员
HttpRunner的关联方法

HttpRunner的关联方法

作者: xianling_he | 来源:发表于2020-05-13 18:16 被阅读0次
    • 生成的数据是随机数的时候,如果后面请求需要引用就会报错
    • 比如下面用例中创建Doc的时候会自动生成一个Doc ID,后面对这个Doc编辑操作

    抓包工具: Fiddler

    找到这个Doc parameter最初出现的请求位置

    • 通过请求找到这个创建document的地方


      image.png
    • 如果你无法确定是哪个请求是创建document,可以用以下两个方法
      1.录制2个步骤相同,使用变量相同的脚本,观察其中不同的变量值
      2.录制完成后进行回放,错误请求的前面一个或者附件的请求就是有需要关联的参数

    确定Document是变化以后,需要在yaml文件中添加参数值

    • 使用yaml本着简洁易读,但是格式有严格要求,之前格式问题经常报错
    • 使用Json也是可以完成,但是Json太多{},[] 代码冗余

    使用extract 将document id保存,提供后面请求使用

    • 添加extract,并创建参数名documentId,保存document id变量

    • 如何获取document id 是根据响应体里面的document 的样式


      image.png
        extract:
            documentId: content.data.id
    
    • 完整请求体如下
    name: /api/list/create_doc
        request:
            data:
                folderId: '0'
                type: '0'
            headers:
                Content-Type: application/x-www-form-urlencoded; charset=UTF-8
                Sec-Fetch-Dest: empty
                Sec-Fetch-Mode: cors
                Sec-Fetch-Site: same-origin
                User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
                    (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
                X-Requested-With: XMLHttpRequest
            method: POST
            url: https://mubu.com/api/list/create_doc
        extract:
            documentId: content.data.id
        validate:
        -   eq:
            - status_code
            - 200
        -   eq:
            - headers.Content-Type
            - application/json;charset=UTF-8
        -   eq:
            - content.code
            - 0
        -   eq:
            - content.msg
            - null
    

    将使用document id的部分进行替换

    • 使用$加上参数名进行替换
    • 参数需要用{}进行包含

    代码如下:

    -   name: /doc${documentId}
        request:
            headers:
                Sec-Fetch-Dest: document
                Sec-Fetch-Mode: navigate
                Sec-Fetch-Site: same-origin
                Sec-Fetch-User: ?1
                User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
                    (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
            method: GET
            url: https://mubu.com/doc${documentId}
        validate:
        -   eq:
            - status_code
            - 200
    

    检查关联的参数是否能够被读取

    • 通过debug方式,打印出Log信息
    • 带上参数--log-level debug 将所有的请求log打印
    hrun demo_mubu.yml --log-level debug
    
    • 在create URL发送请求后,响应中会打印出content.data.id的数据


      image.png

    在报告中查看关联数据的正确性

    image.png createURL.png ReadDoc.png
    • 以上可以清楚的看到在2个请求中都有document id的值,并且在后面请求中也直接使用,返回状态码200
    • 以上是对动态参数进行关联的一点总结

    相关文章

      网友评论

        本文标题:HttpRunner的关联方法

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