- # 导入requests模块
- import requests
-
- # 发送post请求
- requests.post('URL')
-
- # 发送get请求
- requests.get('URL')
-
- # 发送delete请求
- requests.delete('URL')
-
- # 发送put请求
- requests.put('URL')
- import requests
-
- r = requests.get('URL')
-
- # 获取所有文本内容
- print(r.text)
- import requests
-
- r = requests.get('URL')
-
- # 查看编码方式
- print(r.encoding)
-
- print(r.text)
- import requests
-
- r = requests.get('URL')
-
- # 更改编码方式
- r.encoding = 'utf-8'
-
- print(r.encoding)
-
- print(r.text)
- import requests
-
- r = requests.get('URL')
-
- # 查看响应头
- print(r.headers) # 返回的是字典的格式
-
- # 可以用中括号或get取出响应头字段
- print(r.headers['Content-Type'])
- print(r.headers.get('content-type'))
- import requests
-
- r = requests.get('URL')
-
- # 查看状态码
- print(r.status_code)
-
- import requests
-
- r = requests.get('URL')
-
- # 查看json格式的数据
- print(r.json())
-
- import requests
-
- r = requests.get('URL')
-
- # 获取二进制内容
- print(r.content)
-
- # 将二进制内容写入到文件中
- with open('文件要保存的路径', 'wb') as f
- f.write(r.content)
- import requests
-
- # 超时timeout,设置建立连接的有效时长
- r = requests.get('URL', timeout=20) # 设置一个时间为20秒,如果服务器在20秒内没有应答,将会返回一个异常
-
- print(r.text)
- import requests
-
- # 添加path参数
- r = requests.get('http://www.baidu.com/xxx/参数')
-
- print(r.json())
- import requests
-
- # 添加query参数
- # 方式一
- r = requests.get('http://www.baidu.com/xxx?键值对&键值对')
- print(r.json())
-
- # 方式二
- data = {'键名':'键值', '键名':'键值'}
- r = requests.get('http://www.baidu.com/xxx', params=data)
- print(r.json())
- import requests
-
- # 添加form文本
- data = {'键名':'键值', '键名':'键值'}
- r = requests.post('http://www.baidu.com/xxx', data=data)
-
- print(r.json())
- import requests
-
- # 添加cookie
- cookie = {'cookie名':'cookie值'}
- r = requests.post('http://www.baidu.com/xxx', cookies=cookie)
-
- print(r.json())
- import requests
-
- # 添加请求头
- header = {'Content-Type':'application/json'}
- r = requests.post('http://www.baidu.com/xxx', headers=header)
-
- print(r.json())
- import requests
-
- # 添加纯文本请求头,以字符串套字典的形式传给data参数,注意字符串中有中文的话需要加上编码格式
- data = '{'键名':'键值', '键名':'键值'}'.encode('utf-8')
- r = requests.post('http://www.baidu.com/xxx', data=data)
-
- print(r.json())
- import requests
-
- cookie = {'cookie名':'cookie值'}
-
- # 添加form文件
- with open('要上传文件的路径', 'rb') as f:
- data = {'参数名': f}
- r = requests.post('http://www.baidu.com/xxx', files=data, cookies=cookie)
-
- print(r.text)
在python中通过r.json()获取第一个接口的返回值,再通过这个json去取其中的数据,保存成变量直接使用即可。
- # 接口的关联
- # 公共参数
- cookie = {'cookie名': 'cookie值'}
- header = {'Content-Type': 'application/json'}
-
- # 第一个接口
- # 纯文本请求体
- data = '{"键名":"键值","键名":"键值"}'.encode('utf-8')
- r = requests.post('http://www.xxx.com/xx/xxx', cookies=cookie, headers=header, data=data)
-
- # 获取第一个接口的返回值,用变量存储
- comment_id = r.json()['xxx']['xx']
- print(r.json())
- print('👍' * 100)
-
- # 第二个接口
- # 引用该变量
- data = '{"comment_id":"%s", "键名": "键值"}' % comment_id
- r = requests.post('http://www.xxx.com/xx/xxx', cookies=cookie, headers=header, data=data)
- print(r.json())
request仅仅是一个负责发送各种请求的框架,没有参数化的功能。
因此,需要使用ddt第三方模块来进行参数化。
-
- # unittest + ddt 做接口参数化
- import unittest
- from ddt import data, ddt, unpack
-
-
- @ddt # 单个参数的参数化
- class TestInterface(unittest.TestCase):
- @data('assassin', '伍陆柒', '$$')
- def test_case1(self, value):
- print(value)
-
- @data('1', '2', '3')
- def test_case2(self, value):
- print(value)
- # unittest + ddt 做接口参数化
- import unittest
- from ddt import data, ddt, unpack
-
- @ddt # 多个参数的参数化
- class TestInterface(unittest.TestCase):
- @data(['1', 'assassin'], ['2', '五六七'], ['3', '$'])
- @unpack # 添加多个参数时,要用unpack装饰器
- def test_case1(self, news_id, comment):
- print(news_id, comment)
apcase是一个可以根据多维列表生成正交的小工具。
安装apcase :pip install apcase
- import unittest
- import requests
- from ddt import data, ddt, unpack
- import ap
-
-
- @ddt # 多个参数的参数化
- class TestComment(unittest.TestCase):
- # 导入正交工具
- @data(*ap.allpairs([['90', '91'], ['assassin', '伍陆柒', '$$$']]))
- # 评论接口
- @unpack
- def test_case1(self, news_id, comment):
- # cookie
- cookie = {'cookie名': 'cookie值'}
- # 请求头
- header = {'Content-Type': 'application/json'}
- # 纯文本请求体
- data1 = ('{"news_id":"%s","comment":"%s"}' % (news_id, comment)).encode('utf-8')
- r = requests.post('http://www.xxx.com/xxx/news_comment', cookies=cookie, headers=header, data=data1)
- # 添加断言
- assert r.json()['errno'] == '0'
- print(r.json())
- print('-' * 99)