码迷,mamicode.com
首页 > 其他好文 > 详细

第二周_自动化接口测试:requests库使用

时间:2020-03-04 13:09:04      阅读:66      评论:0      收藏:0      [点我收藏+]

标签: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

 

第二周_自动化接口测试:requests库使用

标签:blog   对象   process   代理   users   控制   bsp   使用   大小   

原文地址:https://www.cnblogs.com/majieboke/p/12200224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!