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