httprunner 2.x學習13-自定義校驗器(comparator)


前言

當我們需要對返回的結果做較復雜的校驗時候,httprunner自帶的校驗方法無法滿足我們的需求,可以自己寫校驗方法。

validator 校驗器

httprunner 校驗返回結果有2種格式

  • {"comparator_name": [check_item, expect_value]}
  • {"check": check_item, "comparator": comparator_name, "expect": expect_value}

我們平常用的比較多是是上面這種,直接拿到返回結果,校驗與期望結果是否一致

validate:
        - eq: [status_code, 200]
        - less_than: [status_code, 400]
        - equals: [content.code, 0]
        - equals: [content.msg, success!]
        - length_equals: [content.datas, 2]
        - greater_than_or_equals: [content.datas.0.age, 18]

如果我們需要更復雜一點的校驗,上面的就不能滿足需求了,比如我要判斷返回的結果,所有的年齡都是大於等於18的,但是返回的數據是不固定的,可以是2個也可以是3個

# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/


{
    "code": 0,
    "data": [
        {
            "age": 20,
            "create_time": "2019-09-15",
            "id": 1,
            "mail": "283340479@qq.com",
            "name": "yoyo",
            "sex": "M"
        },
        {
            "age": 21,
            "create_time": "2019-09-16",
            "id": 2,
            "mail": "123445@qq.com",
            "name": "yoyo111",
            "sex": "M"
        }
    ],
    "msg": "success!"
}

自定義校驗器(comparator)

當自帶的斷言方法無法滿足需求的時候,可以自己在 debugtalk.py 寫函數,自定義校驗方法

# debugtalk.py
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/


# 獲取data數據,斷言每個數據的age字段大於等於expect_age
def all_age_great(data, expect_age):
    """ all age great then expect_age
    """
    for info in data:
        assert info.get('age') >= expect_age

於是 yaml 用例可以這樣寫

# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

config:
    name: test_demo
    base_url: http://127.0.0.1:8000
    variables: {}

teststeps:
-
    name: test_demo case1
    request:
        url: /api/test/demo
        method: GET
        headers:
            Content-Type: application/json
            User-Agent: python-requests/2.18.4
    validate:
    -    check: content.data
         comparator: all_age_great
         expect: 18
    -    all_age_great: [content.data, 18]

以上2種方式都是支持的。以上解決方法來源於源作者https://zhuanlan.zhihu.com/p/31994479


httprunner 2.x實戰教程點我 ->立即報名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM