本发明实施例涉及接口测试技术,尤其涉及一种生成接口测试代码的方法及装置。
背景技术:
基于互联网行业项目快速迭代的特点,项目时间进度往往比较紧促,且由于历史迭代积累的业务流程与功能较多,测试人员除了当前迭代的需求测试任务外,往往也需要频繁的进行众多已实现的核心业务流程功能的回归测试,诸如此类的回归测试也需要占用测试人员较多的时间资源,使得本就比较紧促的项目迭代测试时间更加吃力。基于此,自动化测试逐步发展并成熟起来,并由ui(userinterface,用户界面)自动化逐步向接口自动化测试发展,希望借助自动化测试手段来提升回归测试的效率。
在实现项目接口自动化测试过程中,就需要测试人员通过编写大量的测试代码,并借助一系列开源的测试框架来实现。在实际编写测试代码过程中,发现同一类项目的接口自动化核心代码结构有较多共性之处,并且不同的测试人员编写同一项目的接口自动化测试代码,也会因人而异,导致同一项目接口自动化代码组织结构也会比较凌乱,不利于后续维护,也不便于快速实现新增接口或已有接口修改的自动化测试接入与回归验证,大量的接口自动化测试代码完成编写也需要耗费测试人员较多的时间。
技术实现要素:
有鉴于此,本发明实施例提供一种生成接口测试代码的方法及装置,以快速生成接口自动化测试代码,快速实现新增接口或已有接口修改的自动化测试接入与回归验证,并且便于维护。
第一方面,本发明实施例提供了一种生成接口测试代码的方法,所述方法包括:
获取待测试接口的接口信息;
获取针对所述待测试接口预先配置的接口测试代码模板和配置文件;
根据所述接口测试代码模板、所述配置文件和所述接口信息,生成所述待测试接口的接口测试代码。
第二方面,本发明实施例还提供了一种生成接口测试代码的装置,所述装置包括:
接口信息获取模块,用于获取待测试接口的接口信息;
模板配置获取模块,用于获取针对所述待测试接口预先配置的接口测试代码模板和配置文件;
测试代码生成模块,用于根据所述接口测试代码模板、所述配置文件和所述接口信息,生成所述待测试接口的接口测试代码。
本发明实施例的技术方案,通过获取待测试接口的接口信息,获取针对待测试接口预先配置的接口测试代码模板和配置文件,根据接口测试代码模板、配置文件和接口信息,生成待测试接口的接口测试代码,快速生成了接口自动化测试代码,而且通过统一的接口测试代码模板和配置文件可以快速实现新增接口或已有接口修改的自动化测试接入与回归验证,并且便于维护。
附图说明
图1是本发明实施例一提供的一种生成接口测试代码的方法的流程图;
图2是本发明实施例提供的生成接口测试代码的方法中的一个接口测试代码模板的示例图;
图3是本发明实施例提供的生成接口测试代码的方法中的http接口的配置文件示例图;
图4是本发明实施例二提供的一种生成接口测试代码的方法的流程图;
图5是本发明实施例三提供的一种生成接口测试代码的装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
实施例一
图1是本发明实施例一提供的一种生成接口测试代码的方法的流程图,本实施例可适用于对指定的待测试接口自动生成接口测试代码的情况,该方法可以由生成接口测试代码的装置来执行,该装置可以由软件和/或硬件来实现,一般可集成在计算机中,该方法具体包括如下步骤:
步骤101,获取待测试接口的接口信息。
其中,待测试接口为软件接口,包括http(hypertexttransferprotocol,超文本传输协议)接口或者dubbo接口,还可以是基于其他协议的接口。其中,dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的rpc(remoteprocedurecallprotocol,远程过程调用协议)实现服务的输出和输入功能,可以和spring框架无缝集成。
针对一个待测试接口,需要先确定待测试接口的接口信息,接口信息可以在记录接口信息的文档中获取,还可以从该接口的代码中获取。
步骤102,获取针对所述待测试接口预先配置的接口测试代码模板和配置文件。
其中,接口测试代码模板是针对基于一种特定协议的接口,抽取测试代码的共性部分,将其中可变化的部分以预设形式进行配置,如将可变化的部分配置为${key}的形式,key根据待测试接口的接口信息进行自定义。配置文件是针对一种特定协议的接口的配置,以键值(key-value)对形式存储,其中的值是可变化的,并规定值的类型,具体的值需要在接口信息中获取。图2是本发明实施例提供的生成接口测试代码的方法中的一个接口测试代码模板的示例图,如图2所示,接口测试代码模板核心内容已配置完成,代码中可变化的部分配置为${key}的形式,如${actionpackagename}、${actionname}、${suffix}等,从而针对具体项目只需做很小的改动即可快速完成具体项目的接口自动化代码模板的个性化配置,生成对应接口的接口测试代码。图3是本发明实施例提供的生成接口测试代码的方法中的http接口的配置文件示例图。
接口测试代码模板是针对每种协议的接口分别配置的,在对被测试接口进行测试时,首先确定被测试接口使用的协议,从而获取基于该协议的接口测试代码模板和配置文件。可以在存储接口测试代码模板和配置文件时以标识区分不同协议的接口,从而根据标识可快速获取到对应的接口测试代码模板和配置文件;还可以根据用户指定的存储路径获取到对应的接口测试代码模板和配置文件。
步骤103,根据所述接口测试代码模板、所述配置文件和所述接口信息,生成所述待测试接口的接口测试代码。
从所述配置文件获取键值对,键值对中的值是可变化的,根据具体的待测试接口确定,从所述接口信息中获取配置文件中的键对应的具体值,从而确定键值对的具体值,将该具体值写入接口测试代码模板中的相应位置,即配置文件中的键对应的位置,从而生成待测试接口的接口测试代码。
本实施例的技术方案,通过获取待测试接口的接口信息,获取针对待测试接口预先配置的接口测试代码模板和配置文件,根据接口测试代码模板、配置文件和接口信息,生成待测试接口的接口测试代码,快速生成了接口自动化测试代码,而且通过统一的接口测试代码模板和配置文件可以快速实现新增接口或已有接口修改的自动化测试接入与回归验证,并且便于维护。
实施例二
图4是本发明实施例二提供的一种生成接口测试代码的方法的流程图,本实施例在上述实施例的基础上进行了优化,将“根据所述接口测试代码模板、所述配置文件和所述接口信息,生成所述待测试接口的接口测试代码”优化为依次生成被测试类文件、被测试类方法文件、测试类文件和测试类方法文件。该方法具体包括如下步骤:
步骤401,获取待测试接口的接口信息。
步骤402,获取针对所述待测试接口预先配置的接口测试代码模板和配置文件。
步骤403,从所述接口测试代码模板中读取被测试类模板,并从所述配置文件中读取被测试类配置文件。
接口测试代码模板包括被测试类模板、被测试类方法模板、测试类模板和测试类方法模板,在接口测试代码模板中可以根据目标名称区分不同的模板。
步骤404,根据所述被测试类模板和被测试类配置文件,生成被测试类文件。
在读取到被测试类模板和被测试类配置文件后,判断是否已生成被测试类文件,如果未生成则生成被测试类文件,如果已生成则不再重复生成,直接获取已生成的被测试类文件即可。其中,被测试类文件是java格式的文件。
步骤405,从所述接口测试代码模板中读取被测试类方法模板,并从所述配置文件中读取被测试类方法配置文件。
步骤406,根据所述被测试类方法模板、被测试类方法配置文件和所述接口信息,生成被测试类方法文件。
在所述待测试接口为http接口时,根据待测试接口的接口信息,确定所述待测试接口的请求类型,并生成对应的接口调用方式;判断请求url是否带有路径参数,并根据判断结果生成接口请求url;判断待测试接口是否有请求参数,并生成对应的方法调用,即生成带有请求参数或不带有请求参数的方法调用;对所述路径参数、请求参数及请求头参数进行预设顺序的拼接处理组装成被测试方法调用参数。在所述待测试接口为dubbo接口时,只需判断待测试接口是否有请求参数,并生成对应的方法调用,即生成带有请求参数或不带有请求参数的方法调用。
生成被测试方法调用参数后,代入配置文件中对应的键中,形成具体的键值对,并替换被测试方法模板中的键,从而生成被测试方法文件。其中,被测试方法文件为txt格式的文件。
其中,根据所述被测试类方法模板、被测试类方法配置文件和所述接口信息,生成被测试类方法文件,可选包括:
从所述接口信息中获取所述被测试类方法配置文件中的键对应的具体值;
将所述具体值写入所述被测试类方法模板中的对应位置,生成所述被测试类方法文件。
由于接口信息中定义了接口的具体参数,从而在接口信息中可以获取到配置文件中需要的具体参数的值,即具体值,将该具体值写入被测试类方法模板中的对应位置,即键的位置,便生出被测试类方法文件。可以快速获取到对应参数并形成被测试类方法文件。
步骤407,从所述接口测试代码模板中读取测试类模板,并从所述配置文件中读取测试类配置文件。
步骤408,根据所述测试类模板和测试类配置文件,生成测试类文件。
在读取到测试类模板和测试类配置文件后,判断是否已生成测试类文件,如果未生成则生成测试类文件,如果已生成则不再重复生成,直接获取已生成的测试类文件即可。其中,测试类文件是java格式的文件。
步骤409,从所述接口测试代码模板中读取测试类方法模板,并从所述配置文件中读取测试类方法配置文件。
步骤410,根据所述测试类方法模板和测试类方法配置文件,生成测试类方法文件。
根据上述针对http接口拼接后的路径参数、请求头参数和请求参数,或者是dubbo接口的请求参数,形成测试类方法调用参数,并结合测试类方法模板和测试类方法配置文件,生成测试类方法文件。其中,测试类方法文件为txt格式的文件。
步骤411,根据所述被测试类文件、被测试类方法文件、测试类文件和测试类方法文件,生成所述待测试接口的接口测试代码。
将被测试类文件的内容和被测试类文件中的内容进行组合得到对应的被测试类的文件,并将测试类文件的内容和测试类方法文件的内容进行组合得到对应的测试类的文件,被测试类的文件中的内容和测试类的文件中的内容便是生成的待测试接口的接口测试代码。
其中,根据所述被测试类文件、被测试类方法文件、测试类文件和测试类方法文件,生成所述待测试接口的接口测试代码,可选包括:
将所述被测试类方法文件中的内容复制粘贴到所述被测试类文件的预设位置,并将所述测试类方法文件中的内容复制粘贴到所述测试类文件的预设位置,生成所述待测试接口的接口测试代码。通过该处理,可快速生成待测试接口的接口测试代码。
本实施例的技术方案,通过接口测试代码模板与配置文件可快速开发完成特定协议的待测试接口的接口测试代码,有效提升项目接口自动化测试开发的效率,减少测试资源投入时间,对于新增接口或已有接口修改,可快速实现自动化测试接入与回归验证,由于具有统一的接口测试代码模板,使得整体项目结构与代码风格高度统一,便于后续维护工作,其他测试人员可零学习成本快速介入。
在上述技术方案的基础上,在从所述接口测试代码模板中读取测试类模板之前,还可选包括:
从所述接口测试代码模板中读取抽象父测试类模板,并从所述配置文件中读取抽象父测试类配置文件;
根据所述抽象父测试类模板和抽象父测试类配置文件,生成抽象父测试类文件;
根据所述被测试类文件、被测试类方法文件、测试类文件和测试类方法文件,生成所述待测试接口的接口测试代码,包括:
根据所述被测试类文件、被测试类方法文件、抽象父测试类文件、测试类文件和测试类方法文件,生成所述待测试接口的接口测试代码。
对于double类型,需要包括抽象父测试类,因此,在接口测试代码模板中还包括抽象父测试类模板,配置文件中还需包括抽象父测试类配置文件。在读取到抽象父测试类模板和抽象父测试类配置文件后,判断是否已生成抽象父测试类文件,如果未生成则生成抽象父测试类文件,如果已生成则不再重复生成,直接获取已生成的抽象父测试类文件即可。其中,抽象父测试类文件是java格式的文件。
生成了抽象父测试类文件,在生成接口测试代码时还需结合抽象父测试类文件,共同生成接口测试代码。从而使得生成的接口测试代码更加准确,并且提高了接口测试代码模板的通用性。
实施例三
图5是本发明实施例三提供的一种生成接口测试代码的装置的结构示意图,如图5所示,本实施例所述的生成接口测试代码的装置包括:接口信息获取模块510、模板配置获取模块520和测试代码生成模块530。
其中,接口信息获取模块510,用于获取待测试接口的接口信息;
模板配置获取模块520,用于获取针对所述待测试接口预先配置的接口测试代码模板和配置文件;
测试代码生成模块530,用于根据所述接口测试代码模板、所述配置文件和所述接口信息,生成所述待测试接口的接口测试代码。
可选的,所述测试代码生成模块包括:
被测试类模板配置读取单元,用于从所述接口测试代码模板中读取被测试类模板,并从所述配置文件中读取被测试类配置文件;
被测试类文件生成单元,用于根据所述被测试类模板和被测试类配置文件,生成被测试类文件;
被测试类方法模板配置读取单元,用于从所述接口测试代码模板中读取被测试类方法模板,并从所述配置文件中读取被测试类方法配置文件;
被测试类方法文件生成单元,用于根据所述被测试类方法模板、被测试类方法配置文件和所述接口信息,生成被测试类方法文件;
测试类模板配置读取单元,用于从所述接口测试代码模板中读取测试类模板,并从所述配置文件中读取测试类配置文件;
测试类文件生成单元,用于根据所述测试类模板和测试类配置文件,生成测试类文件;
测试类方法模板配置读取单元,用于从所述接口测试代码模板中读取测试类方法模板,并从所述配置文件中读取测试类方法配置文件;
测试类方法文件生成单元,用于根据所述测试类方法模板和测试类方法配置文件,生成测试类方法文件;
测试代码生成单元,用于根据所述被测试类文件、被测试类方法文件、测试类文件和测试类方法文件,生成所述待测试接口的接口测试代码。
可选的,所述测试代码生成模块还包括:
抽象父测试类模板配置读取单元,用于在从所述接口测试代码模板中读取测试类模板之前,从所述接口测试代码模板中读取抽象父测试类模板,并从所述配置文件中读取抽象父测试类配置文件;
抽象父测试类文件生成单元,用于根据所述抽象父测试类模板和抽象父测试类配置文件,生成抽象父测试类文件;
所述测试代码生成单元具体用于:
根据所述被测试类文件、被测试类方法文件、抽象父测试类文件、测试类文件和测试类方法文件,生成所述待测试接口的接口测试代码。
可选的,所述被测试类方法文件生成单元具体用于:
从所述接口信息中获取所述被测试类方法配置文件中的键对应的具体值;
将所述具体值写入所述被测试类方法模板中的对应位置,生成所述被测试类方法文件。
可选的,所述测试代码生成单元具体用于:
将所述被测试类方法文件中的内容复制粘贴到所述被测试类文件的预设位置,并将所述测试类方法文件中的内容复制粘贴到所述测试类文件的预设位置,生成所述待测试接口的接口测试代码。
上述生成接口测试代码的装置可执行本发明任意实施例所提供的生成接口测试代码的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的生成接口测试代码的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。