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中二维阵列的变换实例
Oct 09 Python
python 中split 和 strip的实例详解
Jul 12 Python
Python基于scipy实现信号滤波功能
May 08 Python
Python ORM编程基础示例
Feb 02 Python
Django高并发负载均衡实现原理详解
Apr 04 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 Python
pyinstaller将含有多个py文件的python程序做成exe
Apr 29 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
python统计mysql数据量变化并调用接口告警的示例代码
Sep 21 Python
python MD5加密的示例
Oct 19 Python
Jupyter Notebook 如何修改字体和大小以及更改字体样式
Jun 03 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
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
具有时效性的php加密解密函数代码
2013/06/19 PHP
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
2015/10/08 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
js时间控件只显示年月
2017/01/08 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
layui 上传文件_批量导入数据UI的方法
2019/09/23 Javascript
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
python2与python3共存问题的解决方法
2018/09/18 Python
使用python计算三角形的斜边例子
2020/04/15 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
详解Python多线程下的list
2020/07/03 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
巴西购物网站:Submarino
2020/01/19 全球购物
文明美德伴我成长演讲稿
2014/05/12 职场文书
教师节感谢信
2015/01/22 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
工作一年自我鉴定
2019/06/20 职场文书
Redis主从复制操作和配置详情
2022/09/23 Redis