python做web接口测试零散笔记--1
普通代理的配置:
设置http代理,然后在get或者post的时候提供proxies参数。
import requests
proxies = {
"http": "http://172.1.1.7:1080",
"https": "http://172.1.2.7:1080",
}
requests.get("http://www.baidu.com", proxies=proxies)
如果代理需要http 基本认证,那么可以按照如下的方式设置代理:
proxies = { "http":"http://username:passward@172.1.2.7:1080"}
PAC代理:
pac 是proxy auto configuration的缩写,也就是自动配置代理,在很多公司连接外网的时候,采用的都是pac代理。 在使用python 进行web接口测试的时候,如果遇到pac 代理的情况,那么需要用pypac 模块来实现网络连接.pypac 模块会可以解析pac配置文件,一个比较简单的使用步骤如下:
- 使用get_pac 方法获取pac 配置文件,产生一个pac对象;
- PACSession, 这是pypac模块中的一个class, 通过该类,创建一个PAC SESSION对象,可以只传递 pac对象,也就是上面的get_pac方法的结果.
- PACSession 类实例化的object, 支持很多的metion, 比较常用的有get, post 方法. 见下面的使用举例:
#!/usr/bin/env python
import pypac
pac_file=pypac.get_pac("http://XXX.com/xxx.pac") #Get the PAC file object
PAC_SESSION=pypac.PACSession(pac_file) #Get the PAC SESSION object. Similar with reqeusts.session object.
response=PAC_SESSION.get("https://www.baidu.com/")
print(response.text) #Check the response contents.
证书验证问题:
虽然大多数https网站的证书都是权威机构签发,不会有验证问题,但是公司内部的网站,可能是自签发证书,这时候,如果没有添加信任的话,那么一般会出现如下的报错: "requests.exceptions.SSLError: ......", 这时候可以在get/post的request上加上 verify=false的参数来解决,比如上述的: response=PAC_SESSION.get("https://my.site.com/", verify=False), 如果是verify=True, 那么表示要进行证书的验证,默认是verify=True. 上述方式其实并不推荐,最好的做法是信任证书,然后就没有问题了. 不过上述是最简单的方式了.
SSL连接告警问题:
虽然python可以通过 在请求时候添加 verify=False 来跳过证书的验证过程,但是 如果我们跳过证书的验证,那么python 会给出如下的警告: ** InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3......**, 这时候要disable 这个alerts, 用如下的方式:
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) #Disable the SSL warning.
URL 重定向问题:
在实际的环境中,遇到重定向是再正常不过的事情了,pyhton 的requests 库会自动处理重定向,也就是说,当我们用get方法的时候,redirect 自动执行,通常返回的是重定向后的结果,我们可以在get的时候添加 allow_redirects=False 参数,从而避免自动重定向。
~# cat my.py
#/usr/bin/env python
import requests
r=requests.get("https://cloud.tencent.com/qccomponent/login/api.js") #默认情况下,自动处理redirect .
print(r.status_code)
~# python my.py
200
#################禁止redirect##############################
~# cat my.py
#/usr/bin/env python
import requests
r=requests.get("https://cloud.tencent.com/qccomponent/login/api.js",allow_redirects=False) #添加allow_redirects=False 来禁止重定向。
print(r.status_code) #返回状态为302, 表示重定向.
~# python my.py
302
那么重定向之后的URL是什么呢? 这个可以通过response的headers 信息里面一个key 为location的值找到。如下python的示例用于获取重定先向之后的URL:
$ cat my.py
#/usr/bin/env python
import requests,json
r=requests.get("https://cloud.tencent.com/qccomponent/login/api.js",allow_redirects=False)
print(r.headers["location"])
$ python my.py #运行得到跳转后的地址
https://imgcache.qq.com/qcloud/main/scripts/release/common/login/api.7e9f7a8c93ec5647a3a2.js?max_age=31536000
如果不通过抓包,我们很难知道是否发生了跳转,而在每个浏览器中一般都是“development tool” 或者“development plugin”, 一般是F12键,打开后,切换到“Network” tab,然后就可以看到了.事实上,如果要做web 接口测试,该工具的使用是必不可少的.
get请求和post请求的参数问题:
get请求一般是不带参数的,但是也可以带参数,其所带的参数是会出现在URL中的, post请求的参数是不会出现在URL中的,所以当我们传递用户名密码等信息的时候,都是采用post方式,而不是get.
- 【周末分享】解决中文排版错位的JustifiedTextview控件
- 超级网络
- c++ fstream + string 处理大数据
- 超炫的FlowingDrawer效果
- 源码分享:仿余额宝数字跳动效果 TextCounter
- 一键清理应用数据或者清除应用缓存的方法
- 开发者必知:谷歌做了一个艰难的决定
- React编程思想
- 基于 React + Webpack 的音乐相册项目(下)
- Python中Keras深度学习库的回归教程
- Apache Spark 1.1中的统计功能
- 一次关闭所有Activity和连续点击两次返回键关闭程序的方法
- 解决TextView排版混乱或者自动换行的问题
- 怎样设置EditText内部文字被锁定不可删除和修改,而文字只能在后面输入
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一路踩坑构建Dubbo源码
- vue引入echarts实现数据可视化
- 【七夕特殊礼物】Dubbo学习之SPI实战与debug源码
- Spring学习之浅析refresh()执行逻辑
- vue-lazyload实现图片懒加载
- Python教程之粒子运动轨迹动态绘图
- BFE.dev前端刷题11 - 什么是composition?实现一个pipe()方法
- SSH整合主要XML代码
- struts标签中的select
- 通过反射技术获取泛型真实实例
- 使用POI操作Excel
- StrutsResultSupport的使用
- QueryHelper插件类(hql)
- Action中使用Json
- Spring 集成Quartz