Python接口自动化测试的实现( 五 )

未提供用户名密码:401
已提供用户名密码:200
2、数字认证:
>>> 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.text2、方法二:设置环境变量:
$ 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.text2、客户端证书:
>>> requests.get('https://kennethreitz.org', cert=('/path/client.cert', '/path/client.key'))<Response [200]>or
s = 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,用它来处理批量用例管理,校验返回结果,初始化工作以及测试完成后的环境复原工作等等 。
一、单个用例管理起来比较简单,参考如下图,单个用例一般多用在调试的时候:
Python接口自动化测试的实现

文章插图
 
二、代码如下:
# -*- 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.path3、找到site-packages文件夹的路径并将下载的HTMLTestRunner.py文件拷贝到此的文件夹下
4、在python环境下,输入 import HTMLTestRunner 不报错即安装成功
三、使用该模块生成报告:
1、目录结构


推荐阅读