Python接口自动化测试-requests库的基础使用
简单介绍
requests库简单易用的HTTP库, 这是我看了虫师的那本书后《Web接口开发与自动化测试--基于Python语言》后总结的
Get请求
格式:requests.get(url)。 requests.get(url,params={})
注意:若需要传请求参数,可直接在url最后的?后面,也可以调用get()时多加一个参数params,传入请求参数,注意需要传dict格式;如下图
第一种 url = 'http://127.0.0.1:8888/passport/user/login' param = { 'username': '123', 'password': '321' } """通过params传参""" res = requests.get(url, params=param) # {'code': 200, 'msg': 'success', 'password': '321', 'username': '123'} print(res.json()) """通过params方式传参,最终发出的url也是一致的""" # http://127.0.0.1:8888/passport/user/login?username=123&password=321 print(res.url) 第二种 """通过url最后加上请求参数列表""" url = 'http://127.0.0.1:8888/passport/user/login?username=123&password=321' res = requests.get(url, verify=False) # {'code': 200, 'msg': 'success', 'password': '321', 'username': '123'} print(res.text)
Post请求
格式:requests.post(url,data)
注意:若无请求参数可不传data;当传入请求参数时必须传入dict格式
url = 'http://127.0.0.1:8888/passport/user/post_login' data = { 'username': '123', 'password': '321' } """传入请求参数""" res = requests.post(url, data=data) # {'code': 200, 'msg': 'success', 'password': '321', 'username': '123'} print(res.json()) """查看请求url""" # http://127.0.0.1:8888/passport/user/post_login print(res.url)
对GET和POST的再次封装
1 def http_post(self, url, data, body_format="JSON"): 2 self.driver.set_url(url) 3 self.driver.set_params({}) 4 self.driver.set_data(data) 5 if body_format == "JSON": 6 return self.driver.postWithJson() 7 else: 8 return self.driver.postWithCookies() 9 10 def http_get(self, url, params={}): 11 self.driver.set_url(url) 12 self.driver.set_params(params) 13 return self.driver.get()
自定义headers和cookies
1 """自定义headers""" 2 url = 'https://api.github.com/some/endpoint' 3 headers = {'user-agent': 'my-app/0.0.1'} 4 5 r = requests.get(url, headers=headers) 6 # {'message': 'Not Found', 'documentation_url': 'https://developer.github.com/v3'} 7 print(r.json()) 8 9 """自定义cookies""" 10 url = 'http://httpbin.org/cookies' 11 cookies = dict(cookies_are='working') 12 cookies2 = {'cookies_are': 'working'} 13 14 r = requests.get(url, cookies=cookies) 15 # {'cookies': {'cookies_are': 'working'}} 16 print(r.json())
SSL证书验证
当发送请求如果报以上错误时,可以在请求方法里加多一个字段 verify=False
就可以解决该问题,这个字段是为了免去HTTPS的验证步骤
url = 'https://www.imooc.com' res = requests.get(url, verify=False)
响应内容
注意:当调用 json() 时,确保响应内容是json格式字符串,否则会报错
1 url = 'http://127.0.0.1:8888/passport/user/login' 2 param = { 3 'username': '123', 4 'password': '321' 5 } 6 res = requests.get(url, params=param) 7 print('请求url: ' + res.url) 8 print('响应内容 json格式: ' + json.dumps(res.json())) 9 print('响应内容 字符串格式: ' + res.text) 10 print('响应内容 二进制格式: ' + str(res.content)) 11 print('响应码: ' + str(res.status_code))
获取header
>>> r.headers['Content-Type'] 'application/json' >>> r.headers.get('content-type') 'application/json'
获取cookie
>>> r.cookies['example_cookie_name'] 'example_cookie_value'