热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

unittest单元测试框架前言

一.在我们没有学习过python语言的时候领导让我们做接口测试我们都使用工具来做测试,一般常用的如jemeter,postman这些个工具,我来推荐使用postman这个工具来进行接口测试,有的

一.在我们没有学习过python语言的时候领导让我们做接口测试 我们都使用工具来做测试,一般常用的如jemeter,postman这些个工具,我来推荐使用postman

这个工具来进行接口测试,有的小伙伴们说Fiddler抓接口,然后进行测试不也成吗?成是成,但是接口测试往往优先于客户端测试并且postman这个工具方便用来模拟异常请求,并且postman这个工具还带有验证功能,提高我们接口测试的效率

 

 

 

我们来用postman来进行一个简单的自动化

1.发送一个get请求

2.发送一个post请求

3.设置检查点,检验请求的返回值

验证包含哪些内容

4.自动运行请求的集合

 

 

设置循环次数与间隔时间

这就是postman给我们带来的好处,他可以收集所有接口请求,进行结果断言,在我们需要的时候他可以成批的进行运行。

但是postman的缺点也是十分明显的,他是一个固定的工具,只能满足一部分接口请求的要求,但是有很多接口的请求参数需求他就无法实现了,比如说在请求参数了需要时间戳,需要一个MD5加密的字段,需要从数据库里查询一个id键值,再比如说需要获取返回中的参数这些都无法实现,只能通过手动去获取,那这样自动化的意义也就不存在了,所以最靠谱的实现自动化还是需要使用python来开发一个脚本,按照接口文档的要求开发出相应的接口请求脚本。

 

二.当我们学习过python中的request模块我们可以发送接口请求,发送get,post,put,delete等请求,同时可以发送字典格式的,json格式的,发送文件等类型数据,也可以操作session,COOKIE,并对接口返回进行操作,如获取返回内容,并对返回内容格式化,获取返回的状态码,获取请求时间等功能呢。

下面 我们就用request的模块进行一个简单的接口测试

#导入requests模块
import requests

def test():
    url='http://ios.wecash.net/biz/wallet/amount'
    data='CUSTOMER_ID=56256A951F81F0BCA10780AD02139B29'
    rep=requests.get(url=url,data=data).json()
    print(rep)
    errorDescription=rep['errorDescription']
    if errorDescription == '查询成功':
        print("红包查询接口测试通过")
    else:
        print("红包查询接口测试不通过")

test()

结果如下:

我们的入参需要一个时间戳并且需要一个数据库字段

 

#导入requests模块
import requests
import pymysql
import time
def test():
    # 获取13位时间戳
    millis = int(round(time.time() * 1000))
    print("时间戳:%s"%millis)
    # 创建连接
    cOnn= pymysql.connect(host='localhost', port=3306, user='root', passwd='root123', db='autotest',charset='utf8')
    # 创建游标
    cursor = conn.cursor()

    # 执行SQL,并返回受影响行数
    cursor.execute("select * from autotest_input ")
    # 获取第一行数据
    row_1 = cursor.fetchone()
    print(row_1)
    # 提交,不然无法保存新建或者修改的数据
    conn.commit()

    # 关闭游标
    cursor.close()
    # 关闭连接
    conn.close()
    url = 'http://ios.wecash.net/biz/wallet/amount'
    data = 'CUSTOMER_ID=56256A951F81F0BCA10780AD02139B29'
    rep = requests.get(url=url, data=data).json()
    print(rep)
    errorDescription = rep['errorDescription']
    if errorDescription == '查询成功':
        print("红包查询接口测试通过")
    else:
        print("红包查询接口测试不通过")


test()

 

我们可以看到因为每一个接口的请求方式都是不一样的,传参也不一样,返回结果的校验字段与校验值也是不一样的,所以我们需要一个接口请求写一个方法,这样做好处是清晰方便,便于代码检查,但缺点也同样是异常明显的。首先代码冗余,重复性代码过多,不便于维护而且我们做接口测试,不能只是把接口测通就算通过了,我们还需要进行接口的正反用例,对接口进行边界值测试,传参类型测试,传参合法性测试等等,那就需要我们频繁的修改传参和断言字段与断言字段值,而且我们进行结果断言的时候不能只是用等于来进行校验,因为有的返回字段我们需要对他的类型就行校验,返回的结果的范围进行校验,所以我们要写多个断言判断的方法,这么来看 接口测试用代码来实现 还真不是那么简简单单 so easy的事啊!!!

 

我们仅仅用requests模块进行简单的接口测试是行得通的,但是要只有requests模块给整个公司上百个接口进行测试的话显然这是很难实现地,那么有没有一个更好的方法或者说有一个现成的框架供我们使用呢?答案当时是有的,这就是unittest框架,今天我们来介绍一下他

三。unittest框架简介

unittest单元测试框架不仅可以适用于单元测试和接口自动化测试用例的开发与执行,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成HTML格式的测试结果,便于查看,这么看来unittest框架简直就是自动化测试人员必须掌握的技能之一。

 


推荐阅读
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • 本文探讨了利用Java实现WebSocket实时消息推送技术的方法。与传统的轮询、长连接或短连接等方案相比,WebSocket提供了一种更为高效和低延迟的双向通信机制。通过建立持久连接,服务器能够主动向客户端推送数据,从而实现真正的实时消息传递。此外,本文还介绍了WebSocket在实际应用中的优势和应用场景,并提供了详细的实现步骤和技术细节。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 本课程详细介绍了如何使用Python Flask框架从零开始构建鱼书应用,涵盖高级编程技巧和实战项目。通过视频教学,学员将学习到Flask的高效用法,包括数据库事务处理和书籍交易模型的实现。特别感谢AI资源网提供的课程下载支持。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • ThinkPHP模板中函数调用的开发技巧与实践 ... [详细]
  • Keepalived 提供了多种强大且灵活的后端健康检查机制,包括 HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK 和 MISC_CHECK 等多种检测方法。这些健康检查功能确保了高可用性环境中的服务稳定性和可靠性。通过合理配置这些检查方式,可以有效监测后端服务器的状态,及时发现并处理故障,从而提高系统的整体性能和可用性。 ... [详细]
  • Java中不同类型的常量池(字符串常量池、Class常量池和运行时常量池)的对比与关联分析
    在研究Java虚拟机的过程中,笔者发现存在多种类型的常量池,包括字符串常量池、Class常量池和运行时常量池。通过查阅CSDN、博客园等相关资料,对这些常量池的特性、用途及其相互关系进行了详细探讨。本文将深入分析这三种常量池的差异与联系,帮助读者更好地理解Java虚拟机的内部机制。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • PHP自学必备:从零开始的准备工作与工具选择 ... [详细]
  • 本文作为探讨PHP依赖注入容器系列文章的开篇,将首先通过具体示例详细阐述依赖注入的基本概念及其重要性,为后续深入解析容器的实现奠定基础。 ... [详细]
  • 在PHP的设计中,预定义了9个超级全局变量、8个魔术变量和13个魔术函数,这些变量和函数无需声明即可在脚本的任意位置使用。这些特性在PHP开发中极为常见,能够显著提升开发效率和代码的灵活性。相比之下,Java并没有类似的内置机制,但通过其他方式如上下文对象和反射机制,也可以实现类似的功能。本文将详细探讨这两种语言中这些特殊变量和函数的使用方法及其应用场景。 ... [详细]
author-avatar
ARUAN地盘_740
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有