(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201810987431.X
(22)申请日 2018.08.28
(71)申请人 四川长虹电器股份有限公司
地址 621000 四川省绵阳市高新区绵兴东
路35号
(72)发明人 王雪涵 
(74)专利代理机构 四川省成都市天策商标专利
事务所 51213
代理人 吴瑞芳
(51)Int.Cl.
G06F  11/36(2006.01)
(54)发明名称
基于Python的接口自动化测试方法
(57)摘要
本发明公开了一种基于Python的接口自动
化测试方法,包括定义接口模板和测试用例模
板、读取测试用例、调用接口发送请求、解析接口
返回报文、输出测试报告的步骤。本发明的基于
Python的接口自动化测试方法遵循测试框架的
基本原则,将业务逻辑与测试脚本分离,测试脚
本与测试数据分离,可以随时根据需求进行变
更,
可较大减低对测试人员编码水平的要求。权利要求书1页  说明书6页  附图2页CN 109189684 A 2019.01.11
C N  109189684
A
1.基于Python的接口自动化测试方法,其特征在于,包括以下步骤:
A.采用Python编写测试脚本,在业务层书写测试用例,将测试用例采用CSV文件格式存储;
B.读取测试用例和接口信息,将读取到的信息存为键值对的字典格式;
C.根据被测试接口的请求方法调用不同的请求函数,调用接口并返回响应报文;
D.解析JSON响应报文,设置断言,提取有用的返回字段;
E.输出CSV文件格式的测试报告。
2.根据权利要求1所述的基于Python的接口自动化测试方法,其特征在于,所述步骤A 具体为:
A1.定义测试用例编写格式,按列编写,定义接口信息的格式;
A2.采用Python编写测试脚本,在业务层书写测试用例;
A3.采用CSV文件格式存储测试用例,以Excel文件格式存储接口信息。
3.根据权利要求2所述的基于Python的接口自动化测试方法,其特征在于,所述测试用例编写格式为:第一列是用例编号,第二列为用例内容,第三列为用例期望的返回值字段,第四列为所述返回值字段对应的字段值。
4.根据权利要求2所述的基于Python的接口自动化测试方法,其特征在于,所述接口信息至少包括测试
接口服务器的IP、域名、端口信息、请求类型。
5.根据权利要求1所述的基于Python的接口自动化测试方法,其特征在于,所述步骤B 具体为:
B1.封装一个操作Excel文件的函数用于读取测试接口信息;
B2.装一个操作CSV文件的函数用于读取测试用例信息;
B3.调用自定义的操作CSV文件格式的函数和Excel文件格式的函数,分别读取测试用例和测试接口;
B4.将读取的接口信息和测试用例信息以键值对的方式存放在字典中,记录字典长度,进行循环读取。
6.根据权利要求1所述的基于Python的接口自动化测试方法,其特征在于,所述步骤C 具体包括:
C1.判断读取到的接口服务器的信息;
C2.将读取的测试数据填入接口参数字典中,组成完整的接口参数信息;
C3.根据被测试接口的请求方法调用对应的请求函数并返回对应的响应报文。
7.根据权利要求1所述的基于Python的接口自动化测试方法,其特征在于,所述步骤D 具体采用将JSON报文以键值对的形式保存在字典中并根据键名去匹配期望的返回值字段名。
8.根据权利要求1至7中任一所述的基于Python的接口自动化测试方法,其特征在于,所述测试报告中至少包含以下数据:测试用时,测试用例总条数,测试结果,失败的测试用例条数,接口返回报文和失败原因分析。
权 利 要 求 书1/1页CN 109189684 A
基于Python的接口自动化测试方法
技术领域
[0001]本发明涉及自动化测试技术领域,特别涉及基于Python的接口自动化测试方法。
背景技术
[0002]接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。目前的接口大多数都是使用的http协议,其测试的基本原理是模拟客户端向服务器发送数据,得到相应的响应数据,从而判断接口是否可以正常的进行数据交换。
[0003]手动测试接口也是一种测试的方式,手动测试接口是针对每条测试用例,每次都需要修改接口参
数,调用接口后还需要挨个去比对该条用例的期望值,判断接口返回值是否与期望值一致,一致则通过,不一致还需要出原因,反馈给开发人员,方便其做出对应的修改,这本身就是一项繁杂的工作,尤其当测试用例达到一定数量级,工作量更是成倍的增长,且测试效率低下,也不能完全保证质量。如何在保证测试质量的前提下提高测试效率,减少测试人员工作量,解放劳动力成了接口测试亟需解决的问题。
[0004]现在市面上做接口自动化测试的工具很多,比如Postman,JMeter,Ro bot Framework等,各种不同的测试工具拥有不同的特。JMeter这样的专注性能测试的工具,进行接口测试,有点大材小用而且无法生成测试报告;Postman通过JavaScript脚本控制,需要对前端页面的细节有一定的了解和掌握;Robot Framework作为开源工具,底层用python开发,拥有强大的库函数以支持各种测试场景,相较于其他的接口测试工具来说,Robot Framework更加灵活,可扩展性也更强,但是同时对编程语言,尤其是python语言,以及代码能力也有一定的要求。
[0005]虽然接口测试工具选择丰富,且基本可以满足简单的接口测试要求,但没有一个工具可以完全吻合的去适用于每一个项目,因为不同的项目有不同的数据处理和业务逻辑处理的方式,而且利用工具需要熟悉操作流程,完成各种必要的配置,不够灵活。所以需要自己开发一种更灵活的接口测试框架来适应不同项目环境。
发明内容
[0006]本发明的目的是克服上述背景技术中不足,提供基于Python的接口自动化测试方法,遵循测试框架的基本原则,将业务逻辑与测试脚本分离,测试脚本与测试数据分离,可以随时根据需求进行变更,可较大减低对测试人员编码水平的要求。
[0007]为了达到上述的技术效果,本发明采取以下技术方案:
[0008]基于Python的接口自动化测试方法,包括以下步骤:
[0009]  A.采用Python编写测试脚本,在业务层书写测试用例,将测试用例采用CSV文件格式存储;
[0010]  B.读取测试用例和接口信息,将读取到的信息存为键值对的字典格式;
[0011]  C.根据被测试接口的请求方法调用不同的请求函数,调用接口并返回响应报文;[0012]  D.解析JSON响应报文,设置断言,提取有用的返回字段;
[0013]  E.输出CSV文件格式的测试报告;
[0014]本发明的基于Python的接口自动化测试方法从CSV文件中读取测试用例,从Excel 文件中读取接口信息,将读取的接口输入数据拼接到接口参数中,调用接口,解析接口返回的JSON数据,提取有用字段,与测试用例的期望返回值做比较,从而实现接口自动化测试;[0015]在本发明的基于Python的接
口自动化测试方法中,舍弃Robot Framework测试工具,直接采用Python编写测试脚本,使得代码量大大减少,同时采用CSV文件存取测试用例的方式有效提高了程序的读取速度,从根本上解决了测试效率低下的问题,且最终以自定义方式输出一份简洁明了的测试报告,使得测试结果及缺陷定位一目了然,减轻了测试人员的工作负担,因此,通过本发明的方法可以有效减少用例的执行时间,同时以CSV文件格式输出测试报告,可以有效提高测试效率和开发人员定位缺陷的效率。
[0016]进一步地,所述步骤A具体为:
[0017]A1.定义测试用例编写格式,按列编写,定义接口信息的格式;
[0018]A2.采用Python编写测试脚本,在业务层书写测试用例;
[0019]A3.采用CSV文件格式存储测试用例,以Excel文件格式存储接口信息。
[0020]进一步地,所述测试用例编写格式为:第一列是用例编号,第二列为用例内容,第三列为用例期望的返回值字段,第四列为所述返回值字段对应的字段值。
[0021]进一步地,所述接口信息至少包括测试接口服务器的IP、域名、端口信息、请求类型。
[0022]进一步地,所述步骤B具体为:
[0023]B1.封装一个操作Excel文件的函数用于读取测试接口信息;
[0024]B2.装一个操作CSV文件的函数用于读取测试用例信息;
[0025]B3.调用自定义的操作CSV文件格式的函数和Excel文件格式的函数,分别读取测试用例和测试接口;
[0026]B4.将读取的接口信息和测试用例信息以键值对的方式存放在字典中,记录字典长度,进行循环读取。
[0027]进一步地,所述步骤C具体包括:
[0028]C1.判断读取到的接口服务器的信息;
[0029]C2.将读取的测试数据填入接口参数字典中,组成完整的接口参数信息;[0030]C3.根据被测试接口的请求方法调用对应的请求函数并返回对应的响应报文。[0031]进一步地,所述步骤D具体采用将JSON报文以键值对的形式保存在字典中并根据键名去匹配期望的返回值字段名。
[0032]进一步地,所述测试报告中至少包含测试用时,测试用例总条数,测试结果,失败的测试用例条数,接口返回报文和失败原因分析。
[0033]本发明与现有技术相比,具有以下的有益效果:
[0034]本发明的基于Python的接口自动化测试方法,主要根据接口返回的JSON数据,将嵌套的JSON分层,每一层有用的返回值信息存入一个列表,针对不同层级的返回值,分别与所有的期望值做比较,此过程中避免了单独针对每一个用例去执行一次断言的繁杂,但同
时也覆盖了需要进行断言的每一种情况,而且采用CSV文件存储测试数据,可以有效提高读取速度,这种方式不仅极大地减少了代码量,而且极大地提高了测试效率,非常简洁高效,通过本发明的方法可以有效减少用例的执行时间,同时以CSV文件格式输出测试报告,可以有效提高测试效率和开发人员定位缺陷的效率。
附图说明
app接口测试工具[0035]图1是使用自动化测试框架工具Robot Framework的测试流程图。
[0036]图2是本发明的基于Python的接口自动化测试方法的测试流程图。
具体实施方式
[0037]下面结合本发明的实施例对本发明作进一步的阐述和说明。
[0038]实施例:
[0039]如图1所示是目前比较主流的自动化测试工具Robot Framework进行接口测试的测试流程图,该工具的特点是使用简单,有非常丰富的库,可以像编程一样写测试用例,还支持开发系统关键字,它的架构是一个通用的验收测试和验收测试驱动开发的自动化测试框架(ATDD),具有易于使用的表格来组织测试过程和测试数据。
[0040]其自动化测试流程为:首先将测试用例、接口地址和期望返回值以常量形式保存起来,因为这三种数据在整个测试过程中必须是保持不变的。然后利用其支持开发系统关键字的特性,自定义一个接口关键字,该关键字也即是一个方法或者函数,包括构建接口参数,调用接口,获取接口返回值,将接口返回值转化为JSON字符串四个步骤。
[0041]在构建参数的时候,由于测试用例也是参数的一部分,所以这里需要把测试用例定义为一个变量。自定义关键字的好处就是精简代码,提高复用率,如果接口有变动,只需要修改接口常量即可。
[0042]接下来就是写测试用例,将测试用例作为输入数据,调用接口关键字,从接口返回值中提取出需要比较的字段,与事先定义好的期望返回值对比,如果一致则通过,否则用例失败。
[0043]用例执行结束,Robot Framework会生成一个html格式的报告,点击报告链接,可以查看用例每一步运行的结果,以便定位失败原因。
[0044]经过实践发现,采用Robot Framework实现接口自动化测试代码量太大,一旦哪个测试用例有变化或者期望值有变化都要挨个测试用例去修改,工作量依旧巨大,维护困难;且用例运行时间太长,虽然相比手工测试效率有明显提高,但仍然达不到理想效果。[0045]另外每个测试用例都有一个对应的html测试报告,但是如果失败的测试用例数量较多,查看测试报告也是一个较大的工作量,因为从现有的测试报告里面只能看出代码走到哪一步出错,但是要确切的到错误的根本原因即到底是哪一个字段跟期望值不匹配,还需要查看这条用例返回的JSON报文,从而进一步加大了工作量。
[0046]由上可知,目前的接口测试方法主要存在以下问题:脚本量太大,维护困难;脚本运行时间长,效率低;测试报告信息量太大,bug定位困难。
[0047]针对上述技术问题,本发明公开了一种基于Python的接口自动化测试方法,如图2所示,具体包括以下步骤:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。