python+unittest+requests实现接口自动化的方法


Posted in Python onNovember 29, 2018

前言:

Requests简介

Requests 是使用Apache2 Licensed 许可证的 HTTP 库。用 Python 编写,真正的为人类着想。

Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 有点落后了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。

总之,大家建议大家用Requests吧。

Requests的官方文档:http://cn.python-requests.org/zh_CN/latest/

通过下面方法安装requests

pip install requests

实例实现步骤:

1.采用unittest把每个接口写成一个个测试脚本

2.一个测试脚本中包含一个接口,但是可以包含多个测试用例(即每个接口需要进行多种情况的验证,接口测试用例名称已test开头)

3.使用discover(),该方法会自动根据测试目录匹配查找测试用例文件,并且将查找到的测试组装到测试套件中,因此可以直接通过run()方法执行discover,大大简化了测试用例的查找和执行

4.利用HTMLTestRunner生成测试报告

文档结构:project项目文件下有以下三个文件

python+unittest+requests实现接口自动化的方法

1.report存放测试结果
2.test_case存放测试用例
3.run_test_case.py执行测试用例文件

案例:

1.get接口测试用例源码

# coding:utf-8
import requests
import unittest

class get_request(unittest.TestCase):
  def setUp(self):

    self.get_url = 'https://www.baidu.com/'

  def test_post_01(self):

    url=self.get_url

    r = requests.get(url)

    print r.text

  def tearDown(self):
    pass


if __name__ == "__main__":

  unittest.main()

2.post接口测试用例源码

# coding:utf-8
import requests
import json
import unittest
class post_request(unittest.TestCase):

  def setUp(self):

    self.post_url = '..........' #根据实际接口,自己填写

    self.header = {'.......'} #根据实际内容,自己填写

  def test_post_01(self):

    """正常数据"""

    url=self.post_url

    header = self.header

    data = {""}#根据实际内容,自己填写

    #将data序列化为json格式数据,传递给data参数

    r = requests.post(url, data=json.dumps(data), headers=header)

    print r.text

  def test_post_02(self):

    """异常数据"""

    url=self.post_url

    header = self.header

    data = {""}#根据实际内容,自己填写

    r = requests.post(url, data=json.dumps(data), headers=header)

    print r.text

 

  def tearDown(self):

    pass

if __name__ == "__main__":

  unittest.main()

3.执行测试用例源码

# coding=utf-8
import unittest
import HTMLTestRunner
import time
# 相对路径
test_dir ='./test_case'
test_dir1 ='./report'
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
# 定义带有当前测试时间的报告,防止前一次报告被覆盖
now = time.strftime("%Y-%m-%d %H_%M_%S")
filename = test_dir1 + '/' + now + 'result.html'
# 二进制打开,准备写入文件
fp = file(filename, 'wb')
# 定义测试报告
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'测试报告', description=u'用例执行情况')
runner.run(discover)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的Django REST框架中的序列化及请求和返回
Apr 11 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
详解supervisor使用教程
Nov 21 Python
Python实现备份MySQL数据库的方法示例
Jan 11 Python
python如何在列表、字典中筛选数据
Mar 19 Python
python 多线程串行和并行的实例
Feb 22 Python
python版百度语音识别功能
Jul 09 Python
Python编程学习之如何判断3个数的大小
Aug 07 Python
python 的topk算法实例
Apr 02 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 Python
深入了解Python装饰器的高级用法
Aug 13 Python
在pycharm创建scrapy项目的实现步骤
Dec 01 Python
浅谈Python在pycharm中的调试(debug)
Nov 29 #Python
PyCharm+PySpark远程调试的环境配置的方法
Nov 29 #Python
利用Pycharm断点调试Python程序的方法
Nov 29 #Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 #Python
详解分布式任务队列Celery使用说明
Nov 29 #Python
Python正则表达式和元字符详解
Nov 29 #Python
Django中使用Celery的方法示例
Nov 29 #Python
You might like
php 在线打包_支持子目录
2008/06/28 PHP
php 求质素(素数) 的实现代码
2011/04/12 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
php根据分类合并数组的方法实例详解
2013/11/06 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
JavaScript错误处理
2015/02/03 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
django自定义模板标签过程解析
2019/12/14 Python
python 安装移动复制第三方库操作
2020/07/13 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
一个C/C++编程面试题
2013/11/10 面试题
C#笔试题
2015/07/14 面试题
自我鉴定思想方面
2013/10/07 职场文书
公司合作协议书范本
2014/04/18 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
个人年终总结开头
2015/03/06 职场文书