在过去的几个月中,正在从事一个名为B的项目。它是带有简单Web

UI的徽章生成器,用于添加数据并生成PDF可打印徽章。B后端现在已转移到REST-API并测试REST-API中使用的功能,我们需要一些测试技术来测试API中使用的每个功能。为了我们的目的,我们选择了流行的单元测试

Python测试套件。在此,将讨论如何编写单元测试来测试B REST-API。

首先,让我们了解什么是单元测试以及为什么选择它。然后,我们将继续为B编写API测试。这些测试具有通用的结构,因此我提到的代码可以在其他REST

API测试方案中正常工作,而无需做任何改动。让我们开始并逐步了解API测试。

什么是单元测试?

单元测试是一个Python单元测试框架,它支持测试自动化,共享测试的设置和关闭代码,将测试聚合到集合中以及使测试脱离报告框架。所述单元测试模块提供类,可以很容易地支持这些品质为一组测试。

为什么要进行单元测试?

我们从单元测试中获得了两个主要好处,其中大部分价值都体现在第一个方面:

· 指导您的设计松耦合并充实。如果进行测试驱动的开发,它会将您编写的代码限制为仅需要的内容,并帮助您逐步开发该代码。

· 为重构和代码的少量更改提供快速的自动化回归。

· 单元测试还为您提供了有关系统的小部分工作原理的实时文档。

我们应该始终努力编写涵盖工作代码的全面测试。

现在,这是我如何在B的REST-API后端中编写用于测试代码的单元测试的一瞥。使用单元测试python包和请求模块,我们可以在测试自动化中测试REST

API。

下面是我在其中一个pull请求中编写了单元测试的代码段。

def输出(response_type,消息,download_link):

如果download_link ==”:

response = [

{

'type':response_type,

'message':message

}

]

else:

response = [

{

'type':response_type,

'message':消息,

“ download_link”:download_link

}

]

返回jsonify({'response':response})

为了测试这个功能,我基本上创建了一个模拟对象,它可以模拟以可控的方式真实对象的行为,所以在这种情况下,模拟对象可以模拟输出功能和回报行为的东西像一个JSON响应没有击中真实REST

API。现在,下一个挑战是解析JSON响应,并将响应JSON的特定值提供给Python自动化脚本。因此,Python将JSON作为字典对象读取,并且它确实简化了需要解析和使用JSON的方式。

#!/ usr / bin / env python3

“”“基本功能测试”””

import sys

import json

import unittest

来自app.main import的sys.path.append(“ ../ ..”)*

class TestFunctions(unittest.TestCase):

“”“客户端方法的测试用例。”””

def setup(self):

app.app.config ['TESTING'] = True

self.app = app.app.test_client()

#测试输出函数

def test_output(self):

使用app.test_request_context():

#模拟对象

out = output('错误','测试错误','本地主机')

#传递模拟对象

响应= [

{

'类型' :'error',

'message':'Test Error',

'download_link':'local_host'

}

]

数据= json.loads(out.get_data(as_text = True)

#声明响应

self.assertEqual(data ['response'],response)

如果__name__ =='__main__':

unittest.main()

最后,我们可以通过运行试行测试来验证一切正常 。

这就是在B项目中存储库中编写单元测试的方式。

上述就是关于如何用Python编写REST API的单元测试全部内容,想了解更多关于Python的信息,请继续关注中培教育。

python rest api 测试_如何用Python编写REST API的单元测试相关推荐

  1. python 文本翻译 项目_如何用python批量翻译文本?

    首先,看一下百度翻译的官方api文档. http://api.fanyi.baidu.com/api/trans/product/apidoc # coding=utf-8 #authority:bi ...

  2. python 矩阵运算 for循环_如何用 Python 科学计算中的矩阵替代循环

    展开全部 因为在Mathematica中使用循环确实是低效的.32313133353236313431303231363533e78988e69d8331333361313961..... 深层次的原 ...

  3. python搭建自动化测试平台_如何用python语言搭建自动化测试环境

    原标题:如何用python语言搭建自动化测试环境 技术分享:基于Python语言的Web自动化测试环境搭建 近期发现很多初学者在学习自动化的过程当中,在环境安装环节总是出现问题,所以详细的出一篇环境搭 ...

  4. python编程代码画画_如何用python编写一个绘制马赛克图像的自写程序

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 这篇教程将会展示如何用python的图形化包"Pygame"和基础的文件I/O来创建一 ...

  5. python智能合约编程_如何用Python Flask开发以太坊智能合约

    将数据存储在数据库中是任何软件应用程序不可或缺的一部分.无论如何控制该数据库都有一个该数据的主控.区块链技术将数据存储到区块链网络内的区块中.因此,只要某个节点与网络同步,它们就会获得区块中数据的副本 ...

  6. python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...

    python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...

  7. python 登陆淘宝_如何用 Python 自动登录淘宝并保存登录信息?

    原标题:如何用 Python 自动登录淘宝并保存登录信息? 作者 | 猪哥 责编 | 伍杏玲 前段时间时间为大家讲解了如何使用requests库模拟登录淘宝,而今天我们将对该功能进行丰富.所以我们把之 ...

  8. 如何制作python检查小软件_如何用Python制作整蛊小程序

    原标题:如何用Python制作整蛊小程序 下面的整蛊程序,千万不要发代码,否则就实现不了你整蛊的目的了.完成后一定要打包成一个exe程序,再发给朋友使用 . 1. 使用 pip install pyi ...

  9. python的out模式_如何用python中的DataFrame列的模式替换NA值?

    我对Python(和本网站)完全陌生,目前正试图用它们的模式替换特定数据帧列中的NA值.我试过了各种不起作用的方法.请帮我看看我做错了什么:如何用python中的DataFrame列的模式替换NA值? ...

最新文章

  1. 设置centos默认启动命令行(不启动图形界面)
  2. 用Docker搭建PHP开发环境
  3. [Firebug]用来武装Firebug的十三款Firefox插件
  4. 面试官绝杀:系统是如何支撑高并发的?
  5. QT的QSignalBlocker类的使用
  6. ionic入门教程第五课-举例子说明异步回调$q及$q在项目中的用法
  7. Java多线程_生产者消费者模式1
  8. 【原创】在Windows 环境下利用SVN和Apache以及Ankh配置源代码管理服务
  9. MyCat基于MySQL实现主从切换
  10. 9 个免费的程序员在线简历制作工具
  11. ENVI:如何进行遥感图像的分类?(支持向量机模型)
  12. 利用JD-GUI寻找JAR内部依赖
  13. jcp jsr_JCP专家组成员拒绝社交媒体API引发了关于创新的辩论
  14. mybatis开启日志打印
  15. 关于STM32 程序烧录不进去
  16. html页面长按保存图片,h5长按保存图片
  17. 车牌归属地数据信息sql
  18. delete adjacent duplicates from用法(以某个关键字删除相邻重复行的数据)
  19. python音频分析工具_Python对音频进行测试及频谱分析
  20. 乐视视频”剧“好看 2016海量剧集精彩来袭

热门文章

  1. 1-Dimensional Heightfield Visibility Query
  2. 在Cisco路由器上配置WCCP
  3. 【代码】python paramiko模块代码示例:远程执行命令及上传和下载
  4. Hadoop Hive导入数据命令
  5. Go gin框架:helloworld
  6. VMware虚拟机里面无法直接访问主机磁盘怎么办?
  7. scala中_下划线的使用
  8. Python爬虫开发:正则表达式re的使用
  9. Linux netstat查看网络连接信息
  10. Redis 哨兵Sentinel 文档