未提供用户名密码:4012、数字认证:
已提供用户名密码:200
>>> from requests.auth import HTTPDigestAuth>>> url = 'http://httpbin.org/digest-auth/auth/user/pass'>>> requests.get(url, auth=HTTPDigestAuth('user', 'pass'))<Response [200]>
3、OAuth认证:参考:http://docs.python-requests.org/en/master/user/authentication/
二、代理
1、方法一:proxy参数:
import requests proxies = {"https": "http://41.118.132.69:4433"}r = requests.post("http://httpbin.org/post", proxies=proxies)print r.text
2、方法二:设置环境变量:$ export HTTP_PROXY="http://10.10.1.10:3128"$ export HTTPS_PROXY="http://10.10.1.10:1080" $ python>>> import requests>>> requests.get('http://example.org')
3、HTTP Basic Auth使用代理方法:http://user:password@host/proxies = {'http': 'http://user:pass@10.10.1.10:3128/'}
三、证书验证1、SSL证书(HTTPS):
import requests #跳过12306 的证书验证,把 verify 设置为 False:r = requests.get('https://kyfw.12306.cn/otn/', verify=False)print r.text
2、客户端证书:>>> requests.get('https://kennethreitz.org', cert=('/path/client.cert', '/path/client.key'))<Response [200]>
ors = requests.Session()s.cert = '/path/client.cert'
四、超时配置1 、利用timeout参数来配置最大请求时间:
r = requests.get('https://github.com', timeout=5)
2、设置timeout=None,告诉请求永远等待响应,而不将请求作为超时值传递r = requests.get('https://github.com', timeout=None)
五、错误异常:1、所有Requests显式抛出的异常都继承自:requests.exctptions.RequestException
2、遇到网络问题(如:DNS查询失败,拒绝连接等)时,requests会抛出一个ConnectionError异常
3、遇到罕见的无效HTTP响应时,Request则会抛出一个HTTPError异常
4、若请求超时,则抛出一个Timeout异常
5、若请求超过了最大的重写向次数,则会抛出一个TooManyRedirects异常
(6)unittest-单个用例管理:
上面主要介绍了环境搭建和requests库的使用,可以使用这些进行接口请求的发送 。但是如何管理接口案例?返回结果如何自动校验?这些内容光靠上面五节是不行的,因此从本节开始我们引入python单元测试框架 unittest,用它来处理批量用例管理,校验返回结果,初始化工作以及测试完成后的环境复原工作等等 。
一、单个用例管理起来比较简单,参考如下图,单个用例一般多用在调试的时候:
文章插图
二、代码如下:
# -*- coding:utf-8 -*-# 单个用例执行# 1、导入模块import unittest # 2、继承自unittest.TestCase类class TestOne(unittest.TestCase):# 3、配置环境:进行测试前的初始化工作def setUp(self):print 'ncases before'pass # 4、定义测试用例,名字以“test”开头def test_add(self):'''test add method'''print 'add...'a = 3 + 4b = 7# 5、定义assert断言,判断测试结果self.assertEqual(a, b) def test_sub(self):'''test sub method'''print 'sub...'a = 10 - 5b = 4self.assertEqual(a, b) # 6、清理环境def tearDown(self):print 'case after'pass # 7、该方法会搜索该模块下所有以test开头的测试用例方法,并自动执行它们if __name__ == '__main__':unittest.main()
输出:Ran 2 tests in 0.001sOK cases beforeadd...case after cases beforesub...case after Process finished with exit code 0
(8)unittest-生成测试报告:用例的管理问题解决了后,接下来要考虑的就是报告我问题了,这里生成测试报告主要用到htmlTestRunner.py 这个模块,下面简单介绍一下如何使用:
一、下载HTMLTestRunner下载:
这个模块不能通过pip安装,只能下载安装,下载地址如下:
python3.x版本:http://hzqldjb.blog.51cto.com/9587820/1590802
二、mac下配置:
1、终端进入python环境
2、输入:
import sysprint sys.path
3、找到site-packages文件夹的路径并将下载的HTMLTestRunner.py文件拷贝到此的文件夹下4、在python环境下,输入 import HTMLTestRunner 不报错即安装成功
三、使用该模块生成报告:
1、目录结构
推荐阅读
- python 如何使用HttpRunner做接口自动化测试
- 使用Python预测缺失值
- python语言-数据库查询数组转Dataframe格式
- 用Python抓取小说目录和全文
- python 操作PDF的几种方法
- python随机生成100道100以内的加法试卷
- 你的接口参数怎么接收的
- 用Python开发一个交互式网络和IP地址计算器
- 自动化测试之读取配置文件
- 500个文件生成不到10秒,Python生成合同不要太方便