requests接口测试断言——JSON/XML响应断言
1.响应结果
对于请求头的断言
def test_header(self): r = requests.get('http://httpbin.testing-studio.com/get', headers={"h": "mydemo"}) print(r.text) print(r.json()) assert r.status_code == 200 assert r.json()['headers']["H"] == "mydemo"
2.json断言
两种方式:一种使用assert,另一种使用jsonpath(更简单方便一些)
#对响应进行断言,使用jsonpath def test_json_response(self): r = requests.get('https://home.testing-studio.com/categories.json') print(r.json()) assert r.json()["category_list"]["categories"][0]["name"] == "霍格沃兹测试学院公众号" assert_that(r.json()["category_list"]["categories"][0]["name"],equal_to("霍格沃兹测试学院公众号")) print(jsonpath(r.json(),"$..name")) assert jsonpath(r.json(),"$..name")[0]=="霍格沃兹测试学院公众号"
jsonpath使用指南:
3.xml断言
request对xml格式封装的不强,可以使用request_xml插件, 也可以自己封装一个xml的解析
4. hamcrest
有时候断言需要更严格一些,带一些逻辑的,比如and or这些,这个时候assert就不是那么强大了,这个时候可以使用hamcrest
assert_that
def test_json_response(self): r = requests.get('https://home.testing-studio.com/categories.json') print(r.json()) # assert r.json()["category_list"]["categories"][0]["name"] == "霍格沃兹测试学院公众号" assert_that(r.json()["category_list"]["categories"][0]["name"],equal_to("霍格沃兹测试学院公众号”))