目录1.验证SSL证书2.Post请求1.Assertion2.post请求body带参数3.parametersarenotthepostrequest放在body中4.哪些参数放在QueryString中,哪些参数放在body中?5.如果同时有两个地方,那么可以同时传两个,一一对应即可。Content-Type的格式不同,所以使用不同的方式传递参数1.写post请求的时候注意其数据类型2.传递参数的方式不同3.json格式的post请求1.验证SSL证书https请求的安全级别高于http,需要验证SSL证书。图片来自网络HTTPS请求。打开fiddler,同时运行代码会报错,提示没有这个证书。您可以忽略此证书并添加verify=False。但是还是有警告,可以写:importurllib3urllib3.disable_warnings()来忽略警告。可靠链接:https://blog.csdn.net/qq_35304570/article/details/79826990二、post请求1、断言断言通常被称为检查点。assertion和if:assertion的区别是当不相等时,抛出异常。相等时不会抛出异常。if语句打印出来给你看。importrequestsimporturllib3urllib3.disable_warnings()url='http://japi.juhe.cn/qqevaluate/qq'b={"key":"1cb0de9717e554cef5f3539285b99726","qq":"169535"}r=requests.post(url,data=b)print(r.text)#转换成字典,然后取值reason=r.json()["reason"]print(reason)#实际结果exp="success"#预期结果#Assertion#assertreason==expifreason==exp:print("Testpassed")else:print("Testfailed")if语句也可以抛出异常,比如换成raiseNameError。importrequestsimporturllib3urllib3.disable_warnings()url='http://japi.juhe.cn/qqevaluate/qq'b={"key":"1cb0de9717e554cef5f3539285b9972","qq":"169535"}r=requests.post(url,data=b)print(r.text)#转换成字典,然后取值reason=r.json()["reason"]print(reason)#实际结果exp="success"#预期结果#Assertion#assertreason==expifreason==exp:print("testpassed")else:raiseNameError异常想抛就抛,不想抛就不必抛。2、post请求体中的参数为键值对格式。图片来自网络3.post请求的body中没有放参数。post请求的参数也可以放在params中:这个不是随机的。如果接口文档没有规定参数放在请求体中,可以放在params中,也可以放在体内。图片来自网络4、哪些参数放在QueryString中,哪些参数放在body中?抓包,如果看到?后面的接口参数接下来,使用数据传递。5.如果同时有两个地方,那么可以同时上传两个,一个一个匹配即可。图片来自网络,图片文字由小编整理处理。juhe.cn/qqevaluate/qq'p={"key":"1cb0de9717e554cef5f3539285b99726","qq":"169535"}body={"xx":"xxx"}#Content-Type:application/x-www-form-urlencodedr=requests.post(url,params=p,data=body)print(r.text)#转换成字典后,然后得到值reason=r.json()["reason"]print(reason)#实际结果exp="success"#Expectedresult#Assertion#assertreason==expifreason==exp:print("测试通过")else:print("测试失败")总结:有的post请求参数在url中,有的有些在正文中,有些在url和正文中。什么时候发送get请求,什么时候发送post请求,由开发文档决定。3、如果Content-Type的格式不同,使用不同的方式传递参数。1、写post请求的时候要注意是什么数据类型。常见的有四种,不是只有四种。1.首先是application/json:{"key1":"value1","keyt2":"value2"}json=2。第二个是application/x-www-form-urlencoded:name1=value1&name2=value2data=3。第三种是multipart/form-data:这个是form格式的(文件上传file=,图片上传等)data=4.Content-Type:octets/stream(文件下载)data=5.text/xmldata=2。传递引用的不同方式。图片来自网络get请求也是这种格式,主要是post请求需要区分。post请求:如果是application/x-www-form-urlencoded格式的参数,使用data=,如果是application/json格式的参数,使用json=。要点:只有Content-Type是application/json格式的参数,使用json=,其他格式的参数使用data=。url上面的参数仍然使用params=。3、post请求头声明下的请求体的参数类型,json格式。使用fiddler发送请求:代码可以这样写:第一个参数传递url,这个位置不能随意改变,后面的参数位置可以任意改变,只要指定参数名即可。importrequestsurl="http://www.example.com/"h={"Content-Type":"application/json"}body={"key":"1cb0de9717e554cef5f3539285b99726","qq":"169535"}#Content-Type:application/jsonpassjson=r=requests.post(url,headers=h,json=body)print(r.text)使用fiddler时:ctrl+x可以清空fiddler抓包。暂停并单击捕获。本文转载自微信公众号“清寒软件测试”,可通过以下二维码关注。转载本文请联系西尔维亚软件测试公众号。
