httprunner learning 8-validate validator

Foreword

In a complete test case, the assertion is essential assertion is to take the actual results and expected results to compare, to compare the test results with httprunner validate.

validate validator

In httprunner source inside, utils.py can find what verification method

def get_uniform_comparator(comparator):
    """ convert comparator alias to uniform name
    """
    if comparator in ["eq", "equals", "==", "is"]:
        return "equals"
    elif comparator in ["lt", "less_than"]:
        return "less_than"
    elif comparator in ["le", "less_than_or_equals"]:
        return "less_than_or_equals"
    elif comparator in ["gt", "greater_than"]:
        return "greater_than"
    elif comparator in ["ge", "greater_than_or_equals"]:
        return "greater_than_or_equals"
    elif comparator in ["ne", "not_equals"]:
        return "not_equals"
    elif comparator in ["str_eq", "string_equals"]:
        return "string_equals"
    elif comparator in ["len_eq", "length_equals", "count_eq"]:
        return "length_equals"
    elif comparator in ["len_gt", "count_gt", "length_greater_than", "count_greater_than"]:
        return "length_greater_than"
    elif comparator in ["len_ge", "count_ge", "length_greater_than_or_equals", \
        "count_greater_than_or_equals"]:
        return "length_greater_than_or_equals"
    elif comparator in ["len_lt", "count_lt", "length_less_than", "count_less_than"]:
        return "length_less_than"
    elif comparator in ["len_le", "count_le", "length_less_than_or_equals", \
        "count_less_than_or_equals"]:
        return "length_less_than_or_equals"
    else:
        return comparator

Usually with more eq, eq is equals acronym, summarized here under the relevant verification methods

  • eq equals, determines whether the expected results and the actual results are equal, can be used "eq", "equals", "==", "is"
  • lt less_than, actual judgment result is less than the desired result, can be "lt", "less_than"
  • le less_than_or_equals, the actual result is determined less than or equal to a desired result, can be "le", "less_than_or_equals"
  • gt greater_than, actual judgment result is greater than the desired result, can be "gt", "greater_than"
  • ge greater_than_or_equals, actual judgment result is greater than equal to the desired result, with "ge", "greater_than_or_equals"
  • ne not_equals, determination results and the actual results of unequal desired, may be "ne", "not_equals"
  • str_eq string_equals comparison determination result and the actual result is equal to the desired character string after transfection, can be used "str_eq", "string_equals"
  • Analyzing len_eq length_equals length string or list, can be used "len_eq", "length_equals", "count_eq"
  • len_gt length_greater_than determine the actual length is greater than the result and desired result, can be "len_gt", "count_gt", "length_greater_than", "count_greater_than"
  • Actual results len_ge length_greater_than_or_equals length greater than or equal to a desired result, can be "len_ge", "count_ge", "length_greater_than_or_equals", "count_greater_than_or_equals"
  • Actual results len_lt length_less_than length is less than the desired result, can be "len_lt", "count_lt", "length_less_than", "count_less_than"
  • Actual results len_le length_less_than_or_equals length less than or equal to a desired result, can be "len_le", "count_le", "length_less_than_or_equals", "count_less_than_or_equals"

Case

Then on one of the demo cases, returns the contents as follows

C:\Users\dell>http http://127.0.0.1:8000/api/test/demo
HTTP/1.1 200 OK
Content-Length: 255
Content-Type: application/json
Date: Sun, 22 Sep 2019 10:11:07 GMT
Server: WSGIServer/0.2 CPython/3.6.0
X-Frame-Options: SAMEORIGIN

{
    "code": 0,
    "datas": [
        {
            "age": 20,
            "create_time": "2019-09-15",
            "id": 1,
            "mail": "[email protected]",
            "name": "yoyo",
            "sex": "M"
        },
        {
            "age": 21,
            "create_time": "2019-09-16",
            "id": 2,
            "mail": "[email protected]",
            "name": "yoyo111",
            "sex": "M"
        }
    ],
    "msg": "success!"
}

Returns the result for the above write several different validate, check returns the result, error and asked test_validate_demo.yml

- config:
    name: test_demo
    variables: {}
- test:
    name: test_demo case1
    request:
        url: http://127.0.0.1:8000/api/test/demo
        method: GET
        headers:
            Content-Type: application/json
            User-Agent: python-requests/2.18.4
        json:
            username: test
            password: 123456
    extract:
        - mail: content.datas.0.mail         # 提取mail
    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]

Run a use case

operation result

D:\soft\untitled>hrun test_validate_demo.yml
test_demo case1
INFO     GET http://127.0.0.1:8000/api/test/demo
INFO     status_code: 200, response_time(ms): 5.99 ms, response_length: 255 bytes
INFO     start to extract from response object.
INFO     start to validate.
.

----------------------------------------------------------------------
Ran 1 test in 0.011s

OK
INFO     Start to render Html report ...
INFO     Generated Html report: D:\soft\untitled\reports\1569165498.html

View Report

Guess you like

Origin www.cnblogs.com/yoyoketang/p/11569942.html