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实现定时播放mp3
Mar 29 Python
python开发之list操作实例分析
Feb 22 Python
几种实用的pythonic语法实例代码
Feb 24 Python
基于Django与ajax之间的json传输方法
May 29 Python
Python+pandas计算数据相关系数的实例
Jul 03 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
Apr 10 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
ansible动态Inventory主机清单配置遇到的坑
Jan 19 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 Python
Tensorflow: 从checkpoint文件中读取tensor方式
Feb 10 Python
Python使用xlrd实现读取合并单元格
Jul 09 Python
基于python的opencv图像处理实现对斑马线的检测示例
Nov 29 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
YII使用url组件美化管理的方法
2015/12/28 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
2016/08/29 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
获取当前网页document.url location.href区别总结
2008/05/10 Javascript
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
Vue组件通信的几种实现方法
2019/04/25 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
JavaScript canvas实现跟随鼠标移动小球
2021/02/09 Javascript
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
python数据结构之图的实现方法
2015/07/08 Python
Python实现模拟时钟代码推荐
2015/11/08 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
python hash每次调用结果不同的原因
2019/11/21 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
CSS3属性选择符介绍
2008/10/17 HTML / CSS
英格兰足协官方商店:England Store
2019/07/12 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
应届大专毕业生个人自荐信
2013/09/22 职场文书
简单而又朴实的个人求职信分享
2013/12/12 职场文书
物流司机岗位职责
2013/12/28 职场文书
岗位职责怎么写
2014/03/14 职场文书
管理提升方案
2014/06/04 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
会计电算化实训报告
2014/11/04 职场文书
入党积极分子个人总结
2015/03/02 职场文书
唐山大地震的观后感
2015/06/05 职场文书
Oracle创建只读账号的详细步骤
2021/06/07 Oracle