# 导入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)