标签:blog 对象 process 代理 users 控制 bsp 使用 大小
目录:
一. 第一周_接口手工测试:网络基础知识、抓包、Postman回顾,Pycharm安装教程和问题
二. Requests库介绍
三. 请求发送
四. 响应解析
五. 参数化
六. 断言
七. 其他(认证/关联/异步接口)
一、第一周_接口手工测试:网络基础知识、抓包、Postman回顾
Pycharm安装教程和问题
Pycharm安装教程
安装:https://www.cnblogs.com/QYGQH/p/7569769.html
第一步:打开界面
第二步:选择代码路径和Python解释器版本
第三步:设置Pycharm菜单字体的大小
第四步:设置编辑器里面字体大小
第五步:设置文件编码
第六步:设置背景颜色
第七步:设置tab键为4个空格
第八步:设置行号
第九步:设置控制台背景颜色
第十步:查看快捷键
快捷键使用:
1. Ctrl + D:复制当前行
2. Ctrl + Y:删除当前行
3. Ctrl + Z 撤销
4. Shift + Enter:快速换行
5. Ctrl + /:快速注释
6. Ctrl + F: 查找
7. Ctrl + H: 替换
8. Tab: 缩进
9. Shift + Tab:取消缩进
10. Ctrl +减号:折叠当前代码块
11. Ctrl +加号:展开当前代码块
12. Ctrl +Shift+减号:整个文件全部折叠
13. Ctrl +Shift+加号:整个文件全部展开
Pycharm常见问题
Pycharm专业版激活
1. 使用前将“0.0.0.0 account.jetbrains.com”添加到hosts文件中
2. 使用激活码激活
第一,Pycharm通过鼠标滚轮放大缩小字体
第二,安装第三方包
第三,避免导包问题,需要把将每一天的文件夹标记为"Sources Root"(标记代码目录为“源码目录”)
第四,使用pip在命令行中安装了包, 在Pycharm中导入报错
原因:Pycharm新建项目时默认使用虚拟环境,虚拟环境的包和“真实环境”的包是隔离的,使用pip默认安装到“真实环境”中,此时虚拟环境中是没有该包的
解决方法:在Pycharm设置安装包
第五,包/模块导入报错
解决方法:
1. 检查该文件或该目录下同级文件是否有和所导入包重名的文件
2. 个人使用的文件名不要和系统存在的包、三方包等重名,建议个人新建的文件使用两个以上英文单词,如requests_demo.py
二、Requests库介绍
Requests库介绍
Requests是一个非常简单容易使用的HTTP请求发送库,结构清晰,功能完善,非常容易上手。
安装方法
pip install requests
请求
请求方法: 用于发送不同的请求(GET/POST/PUT/…)
请求参数: 请求方法中的参数(url/params/data…)
响应
获取相应对象: res = requests.get(….) # 自定义一个变量res接收响应对象
响应解析: res.headers/res.status_code/res.text…
Requests库介绍: 请求方法
请求方法
res = requests.get(url, ...):发送get请求
requests.post(url,...):发送post请求
requests.put(url,...):发送put请求
......
requests.request(url, method,...): 通用的请求方法,支持各种请求
requests.session(): 用于保持会话(session)
除了requests.session()外,其他请求方法requests.get/post/put/...的参数都一样,都包含url,params, data, headers, cookies, files, auth, timeout等等
Requests库介绍: 请求参数
请求参数
url:字符串格式,参数也可以直接写到url中
params:url参数,字典格式
data:请求数据,字典或字符串格式(需手动编码和指定内容类型)
headers:请求头,字典格式
cookies:字典格式 (也可以使用字符串放在headers中)
files:字典格式,用于混合表单(form-data)中上传文件
auth:Basic Auth授权,数组格式 auth=(user,password)
timeout:超时时间(防止请求一直没有响应,最长等待时间),数字格式,单位为秒
proxy=():使用代理
verify=False :是否验证HTTPS证书,默认是True
参数的两种写法
requests.get(‘http://www.baidu.com’,{…}) # 只有url时可这样使用
requests.get(url=‘http://….’, params={}…) # 推荐格式
Requests库介绍: 响应解析
响应解析
res.status_code:响应的HTTP状态码
res.reason:响应的状态码含义
res.text:响应的文本格式,按res.encoding解码
res.content:响应的二进制格式
res.encoding:解码格式,可以通过修改res.encoding=‘utf-8‘来解决一部分中文乱码问题
res.apparent_encoding:真实编码,由charset库提供的明显编码
res.json():(注意,有括号),响应的json对象(字典)格式,慎用!如果响应文本不是合法的json文本,或报错
res.headers:响应头
res.cookies:响应的cookieJar对象,可以通过res.cookies.get(key)来获取响应cookies中某个key对应的值
# 1.导入requests
import requests
# 2.组装请求报文并发送
response = requests.get(‘http://httpbin.org/get‘)
# 3.解析响应
print(response.status_code) # 状态码
print(response.text) # 响应数据(文本格式)
写成函数形式:
# 1.导入requests
import requests
# 练习1 get请求
def get_01():
# 2.组装请求报文并发送
response = requests.get(‘http://httpbin.org/get‘)
# 3.解析响应
print(response.status_code) # 状态码
print(response.text) # 响应数据(文本格式)
get_01()
# 练习2 带参数get请求
def get_02():
# url = ‘http://www.tuling123.com/openapi/api?key=ec961279f453459b9248f0aeb6600bbe&info=你好‘
url = ‘http://www.tuling123.com/openapi/api‘
p = {‘key‘: ‘ec961279f453459b9248f0aeb6600bbe‘, ‘info‘: ‘你好‘} # 字典变量
response = requests.get(url, params=p)
print(response.status_code) # 状态码
print(response.text) # 响应数据(文本格式)
get_02()
# 练习3 加法运算,带参数get请求
def get_03():
url = ‘http://115.28.108.130:5000/add/‘
p = {‘a‘: 1, ‘b‘: 2} # 字典变量
response = requests.get(url, params=p)
print(response.status_code) # 状态码
print(response.text) # 响应数据(文本格式)
get_03()
# 练习4 post请求,纯文本表单格式
def post_form01():
"""纯文本表单格式Content-Type:application/x-www-form-urlencoded"""
url = ‘http://115.28.108.130:5000/api/user/login/‘
data = {
‘name‘: ‘张三‘,
‘password‘: ‘123456‘
} # 字典类型的请求数据
response = requests.post(url, data=data) # data接受字典格式的数据是会进行url编码
print(response.text)
post_form01()
# 练习5 post请求,纯文本表单格式
def post_form02():
url = ‘http://httpbin.org/post‘
data = {
‘name‘: ‘kevin‘,
‘age‘: ‘21‘,
‘gender‘: ‘male‘
}
response = requests.post(url, data=data)
print(response.text)
post_form02()
# 练习6
def post_json03():
url = ‘http://115.28.108.130:5000/api/user/reg/‘
# 字典 True/False/None-->JSON true/false/null
play_load = {
"name": "张三",
"password": "123456"
}
res = requests.post(url, json=play_load)
print(res.text) # 响应的文本格式
print(res.json()) # 将响应文本转化为字典,只有当响应数据是json格式时才能转为字典,否则会报错
res_dict = res.json()
print(res_dict[‘code‘])
print(res_dict[‘msg‘])
print(res_dict[‘data‘][‘name‘])
post_json03()
# 练习7
def add_card_json():
url = ‘http://115.28.108.130:8080/gasStation/process‘
play_load = {
"dataSourceId": "bHRz",
"methodId": "00A",
"CardInfo": {
"cardNumber": "0100020"
}
}
response = requests.post(url, json=play_load)
print(response.json())
print(response.text)
add_card_json()
# 练习8
def put_xml():
"""发送xml格式的数据(发送原始格式的数据)"""
url = ‘http://httpbin.org/put‘
play_load = ‘‘‘
<xml>
<msg>hello</msg>
</xml>‘‘‘
headers = {"Content-Type": "application/xml"} # 使用原始格式发送时应手动在请求头中指定内容类型
res = requests.put(url, data=play_load, headers=headers) # 当赋给data以字符串格式的话,会原样发送
print(res.json())
print(res.text)
put_xml()
# 练习9
"""三个双引号:用来作为函数的功能说明"""
‘‘‘三个单引号:用于多行文本‘‘‘
def post_json():
"""发送json格式的数据(发送原始格式的数据)"""
url = ‘http://115.28.108.130:5000/api/user/reg/‘
play_load = ‘‘‘{
"name": "张三",
"password": "123456"
}‘‘‘.encode(‘utf-8‘).decode(‘latin-1‘)
headers = {"Content-Type": "application/json"} # 使用原始格式发送时应手动在请求头中指定内容类型
res = requests.post(url, data=play_load, headers=headers) # 当赋给data以字符串格式的话,会原样发送
print(res.json())
print(res.text)
post_json()
# 练习10
def post_file():
"""上传文件接口"""
url = ‘http://115.28.108.130:5000/api/user/uploadImage/‘
files = {‘file‘: open(r‘C:\Users\Administrator\Desktop\1.png‘, ‘rb‘)} # ‘rb‘是以2进制格式打开
res = requests.post(url=url, files=files)
print(res.text)
post_file()
# 练习11 发送请求并获取响应对象
def get_baidu():
url = ‘https://www.baidu.com‘
res = requests.get(url)
print(res.status_code, res.reason) # 200 OK
# print(res.json()) # 会报错
print(res.text) # 文本格式,有乱码
print(res.content) # 二进制格式
print(res.encoding) # 查看解码格式 ISO-8859-1
print(res.apparent_encoding) # utf-8
res.encoding = ‘utf-8‘ # 手动设置解码格式为utf-8
print(res.text) # 乱码问题被解决
print(res.headers) # 会报错
print(res.cookies.items()) # cookies中的所有的项 [(‘BDORZ‘, ‘27315‘)]
print(res.cookies.get("BDORZ")) # 获取cookies中BDORZ所对应的值 27315
get_baidu()
# 练习12
# 关联/接口依赖----------------------------------------
def post_session():
"""会话保持"""
session = requests.session() # 新建一个会话
# 第一个请求----------------------------------------
url = ‘http://115.28.108.130:5000/api/user/login/‘
data = {
‘name‘: ‘张三‘,
‘password‘: ‘123456‘
}
response = session.post(url, data=data)
print(response.text)
# 第二个请求----------------------------------------
url = ‘http://115.28.108.130:5000/api/user/getUserList‘
response = session.get(url)
print(response.text)
post_session()
# 练习14
def post_cookies():
url = ‘http://115.28.108.130:5000/api/user/login/‘
data = {
‘name‘: ‘张三‘,
‘password‘: ‘123456‘
}
response = requests.post(url, data=data)
print(response.text)
print(response.cookies)
url = ‘http://115.28.108.130:5000/api/user/getUserList‘
response = requests.get(url, cookies=response.cookies)
print(response.text)
post_cookies()
三、请求发送
2
四、响应解析
3
五、参数化
1
六、断言
1
七、其他(认证/关联/异步接口)
1
标签:blog 对象 process 代理 users 控制 bsp 使用 大小
原文地址:https://www.cnblogs.com/majieboke/p/12200224.html