本发明涉及测试管理技术领域,尤其涉及一种测试数据的加载方法、装置、计算机设备及存储介质。
背景技术:
webui(websiteuserinterface,网络产品界面设计)自动化中经常使用数据驱动来加载测试用例要用到的数据,即将数据驱动,现在常用的使用testng开源框架提供数据驱动功能,但现有testng提供的数据驱动方法dataprovider有以下局限:
在测试方法中,使用dataprovider必须提供明确的数据来源,即要在每一个测试方法都要指明数据源的java类名与方法名,因为数据源的java类名与方法名一般是一样的,所以会造成重复写这部分代码,很繁琐。
技术实现要素:
本发明提供一种测试数据的加载方法、装置、计算机设备及存储介质,测试用例脚本代码中无需关注数据来源,减少用例脚本代码冗余与出错机率,提高脚本开发的效率。
本发明提供了一种测试数据的加载方法,该方法包括:
创建与待测试类同名的数据文件;并将对应的测试数据存储在所述数据文件中;
将存储有所述测试数据的数据文件保存在预置路径下;
当对所述待测试类进行运行测试时,通过获取所述待测试类的类名称获取所述数据文件的存储路径;
通过所述数据文件的存储路径获取所述数据文件中的测试数据。
本发明提供了一种测试数据的加载装置,该装置包括:
创建模块,用于创建与待测试类同名的数据文件;并将对应的测试数据存储在所述数据文件中;
存储模块,用于将存储有所述测试数据的数据文件保存在预置路径下;
第一获取模块,用于当对所述待测试类进行运行测试时,通过获取所述待测试类的类名称获取所述数据文件的存储路径;
第二获取模块,用于通过所述数据文件的存储路径获取所述数据文件中的测试数据。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述测试数据的加载方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述测试数据的加载方法。
上述测试数据的加载方法、装置、计算机设备及存储介质,首先创建与待测试类同名的数据文件;并将对应的测试数据存储在所述数据文件中;然后将存储有所述测试数据的数据文件保存在预置路径下;当对所述待测试类进行运行测试时,通过获取所述待测试类的类名称获取所述数据文件的存储路径;最后通过所述数据文件的存储路径获取所述数据文件中的测试数据。与目前要在每一个测试方法都要指明数据源的java类名与方法名相比,本发明实施例事先创建一个与测试类同名的数据文件名,并将测试数据根据格式标准统一存储在与测试数据同名的数据文件中,以此规范数据文件的命名,然后利用测试类名与数据文件同名的特点,在自动化运行过程中获取到这些测试数据,这样自动化运行框架代码并不需要事先在代码中写入测试数据文件名,而是动态得知的,因此,通过本发明实施例加载的测试数据,测试用例脚本代码中无需关注数据来源,减少用例脚本代码冗余与出错机率,提高脚本开发的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中测试数据的加载方法的一流程图;
图2是本发明一实施例图1中步骤s10的详细流程图;
图3是本发明一实施例图1中步骤s30的详细流程图;
图4是本发明一实施例图1中步骤s40的详细流程图
图5是本发明一实施例中测试数据的加载装置的一原理框图;
图6是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在一实施例中,如图1所示,提供一种测试数据的加载方法,包括如下步骤:
s10,创建与待测试类同名的数据文件;并将对应的测试数据存储在所述数据文件中。
本发明实施例中的待测试类是需要进行测试的类,测试类可以是java类,它是根据类的功能划分的一种分类,是为了方便区别于其他类(自动化框架类等)的,待测试类的功能主要是进行weui页面自动化测试的,即测试类的划分是根据业务的功能人为划分的。需要说明的是,类(class)是面向对象程序设计(oop,object-orientedprogramming)实现信息封装的基础。类是一种用户定义类型,每个类包含数据说明和一组操作数据或传递消息的函数,类的实例称为对象。其中,java类(javaclass)是面向对象程序设计语言中的一种,java类是指java编程语言中的类。
在本实施例中,创建与待测试类同名的数据文件,即首先确定待测试类的类名,然后创建一个与该类名相同的数据文件,用于存储待测试类所需要的测试数据。例如,存在一个用于测试登录功能的待测试类,该待测试类的类名为“login”,则创建名称为“login”数据文件,并将该待测试类所有需要的登录用户名和密码等测试数据存储在名称为“login”数据文件中。
在一实施例中,如图2所示,所述步骤s10:创建与待测试类同名的数据文件;并将对应的测试数据存储在所述数据文件中,包括如下步骤:
s101,利用文本编辑器创建与待测试类同名的json格式的数据文件。
在本发明实施例中,将数据文件存储为json格式中是为了方便程序读取与查找,json格式是键值对的存储方式。例如,存在一个用于测试计算功能的待测试类,该待测试类的类名为“calculation”,则创建需要名称为calculation.json数据文件。
s102,打开并编辑所述json格式的数据文件,并在其内增加json格式的测试数据。
例如,对calculation.json数据文件进行编辑,并将其内容统一格式如下:
在本实施例中,利用文本编辑器创建与待测试类同名的json格式的数据文件,然后打开并编辑所述json格式的数据文件,并在其内增加json格式的测试数据。可在后续步骤中方便程序读取与查找,并利用测试类名与数据文件同名的特点,无需代码中指定,将自动加载测试数据文件,从而提高测试数据的加载速度,进而提高测试类的测试效率。
s20,将存储有所述测试数据的数据文件保存在预置路径下。
其中,预置路径是事先规定存放数据文件的某个目录,具体可以根据实际需求设置预置路径。是为了方便统一管理,可将所有过的数据文件都放在同一个预置路径下。
需要说明的是,本发明实施例中可以包含多个待测试类,每个待测试类对应一个数据文件,即每个待测试类都有一个与其类名相同的数据文件,为了方便统一管理,将所有待测试类对应的数据文件中都存储一个路径下,而这个路径是根据实际需求进行设置的。
s30,当对所述待测试类进行运行测试时,通过获取所述待测试类的类名称获取所述数据文件的存储路径。
在本发明实施例中,在对待测试类进行运行测试时,通过testng提供的reporter静态类来动态获取当前的待测试类的类名称,即获取数据文件的名称,然后依据获取的待测试类的类名称得到数据文件的存储路径。具体的,本发明实施例通过编写一个java类,并将该类命名为datadriver来实现获取数据文件的存储路径。其中,这个datadriver类就是自动化测试框架数据驱动的基础类,用于实现自动化运行的测试数据的自动化获取,在此类的构造函数中通过reporter类获取待测试类的类名称,然后拼接加上预置路径,最后得到数据文件的存储路径,这样自动化运行框架代码并不需要事先在代码中约定测试数据的文件名,而是动态得知的,减少用例脚本代码冗余与出错机率,提高的脚本开发效率。
在一实施例中,如图3所示,所述步骤s30:通过获取所述待测试类的类名称获取所述数据文件的存储路径,包括如下步骤:
s301,通过reporter静态类获取所述待测试类的类名称。
其中,reporter静态类也是testng开源测试框架所提供的一个类,其功能就是获取测试类运行过程中的过程信息,其过程信息都保存在reporter静态类中,其中过程信息就包括测试类名,即待测试类的类名。
s302,将所述预置路径和所述待测试类的类名称进行拼接,得到所述数据文件的存储路径。
在本发明实施例中,将所述预置路径和所述待测试类的类名称进行拼接,即可以获取的存储有测试数据的路径,即数据文件的存储路径。例如,存放数据文件的预置路径为d:\xx\xx\data,待测试类的类名为xxx.json,则将预置存储路径d:\xx\xx\data和类名xxx.json进行拼接得到数据文件的存储路径d:\xx\xx\data\xxx.json。
s40,通过所述数据文件的存储路径获取所述数据文件中的测试数据。
在一实施例中,如图4所示,所述步骤s40:所述通过所述数据文件的存储路径获取所述数据文件中的测试数据,包括如下步骤:
s401,通过所述数据文件的存储路径读取所述数据文件,并将读取的测试数据存储到json结构对象中。
具体的,为了方便程序的存储于查找,本发明实施例可以在datadriver类中使用开源fastjson模块根据步骤s30中获取的数据文件的存储路径,读取数据文件中存储的测试数据,并将测试数据保存到json结构对象中,以便在后续步骤中从json结构对象中获取数据文件中的测试数据。
s402,从所述json结构对象中获取所述数据文件中的测试数据。
在将读取的测试数据存储到json结构对象中后,本发明实施例就可以从json结构对象中获取所述数据文件中的测试数据了。具体的,本发明实施例可以通过在datadriver类中编写一个叫做getmethoddataobj()的函数,并用该函数获取测试函数中的测试数据。并在任一个待测试类的构造函数中调用datadriver类将整个待测试类的测试数据读出来,而不再需要具体指定哪个测试数据文件,从而通过本发明实施例减少了用例脚本代码冗余与出错机率,提高了脚本的开发效率。
需要说明的是,本发明实施例读取的是整个测试类中的测试数据,即在testng框架中,待测试类可能有多个,因为有很多个功能要测试,一般是一个功能模块对应用的一个测试类,一个测试类中又包含有很多的测试方法即测试函数,一个测试函数对应用我们实际的测试数据。
在本发明提供的另一个实施例中,所述方法还包括:将获取的所述数据文件中的测试数据放入methoddata中,以使用所述测试数据。具体的,通过getmethoddataobj()方法获取测试方法所对应的测试数据,并将获取的测试数据放入methoddata中,这样就可以使用这些测试数据了。
本发明实施例提供了一种测试数据的加载方法,首先创建与待测试类同名的数据文件;并将对应的测试数据存储在所述数据文件中;然后将存储有所述测试数据的数据文件保存在预置路径下;当对所述待测试类进行运行测试时,通过获取所述待测试类的类名称获取所述数据文件的存储路径;最后通过所述数据文件的存储路径获取所述数据文件中的测试数据。与目前要在每一个测试方法都要指明数据源的java类名与方法名相比,本发明实施例事先创建一个与测试类同名的数据文件名,并将测试数据根据格式标准统一存储在与测试数据同名的数据文件中,以此规范数据文件的命名,然后利用测试类名与数据文件同名的特点,在自动化运行过程中获取到这些测试数据,这样自动化运行框架代码并不需要事先在代码中写入测试数据文件名,而是动态得知的,因此,通过本发明实施例加载的测试数据,测试用例脚本代码中无需关注数据来源,减少用例脚本代码冗余与出错机率,提高脚本开发的效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种测试数据的加载装置,该测试数据的加载装置与上述实施例中测试数据的加载方法一一对应。如图5所示,该测试数据的加载装置包括创建模块10、存储模块20、第一获取模块30和第二获取模块40。各功能模块详细说明如下:
创建模块10,用于创建与待测试类同名的数据文件;并将对应的测试数据存储在所述数据文件中;
存储模块20,用于将存储有所述测试数据的数据文件保存在预置路径下;
第一获取模块30,用于当对所述待测试类进行运行测试时,通过获取所述待测试类的类名称获取所述数据文件的存储路径;
第二获取模块40,用于通过所述数据文件的存储路径获取所述数据文件中的测试数据。
具体的,所述第一获取模块30,包括:
获取单元31,用于通过reporter静态类获取所述待测试类的类名称;
拼接单元32,用于将所述预置路径和所述待测试类的类名称进行拼接,得到所述数据文件的存储路径。
具体的,所述第二获取模块40,包括:
读取单元41,用于通过所述数据文件的存储路径读取所述数据文件,并将读取的测试数据存储到json结构对象中;
获取单元42,用于从所述json结构对象中获取所述数据文件中的测试数据。
具体的,所述创建模块10,包括:
创建单元11,用于利用文本编辑器创建与待测试类同名的json格式的数据文件;
编辑单元12,用于打开并编辑所述json格式的数据文件,并在其内增加json格式的测试数据。
进一步的,所述装置还包括:
存储模块50,用于将获取的所述数据文件中的测试数据放入methoddata中,以使用所述测试数据。
关于测试数据的加载装置的具体限定可以参见上文中对于测试数据的加载方法的限定,在此不再赘述。上述测试数据的加载装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部服务器通过网络连接通信。该计算机程序被处理器执行时以实现前述任意一种测试数据的加载方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
创建与待测试类同名的数据文件;并将对应的测试数据存储在所述数据文件中;
将存储有所述测试数据的数据文件保存在预置路径下;
当对所述待测试类进行运行测试时,通过获取所述待测试类的类名称获取所述数据文件的存储路径;
通过所述数据文件的存储路径获取所述数据文件中的测试数据。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
创建与待测试类同名的数据文件;并将对应的测试数据存储在所述数据文件中;
将存储有所述测试数据的数据文件保存在预置路径下;
当对所述待测试类进行运行测试时,通过获取所述待测试类的类名称获取所述数据文件的存储路径;
通过所述数据文件的存储路径获取所述数据文件中的测试数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。