一种生成自动化执行策略的方法、系统、设备及存储介质与流程

文档序号:26139121发布日期:2021-08-03 14:22阅读:86来源:国知局
一种生成自动化执行策略的方法、系统、设备及存储介质与流程

本发明涉及一种生成自动化执行策略的方法、系统、设备及存储介质,属于自动化执行策略生成领域。



背景技术:

测试项目中,选择testng作为自动化测试的执行框架。除全量执行外,还会经常遇到因业务测试需要而制定不同的自动化案例执行策略。案例量少的时候,手工配置testng.xml问题不大;但在自动化案例量逐渐增多情况下,且开始整体规划不好的情况下,手工配置就会消耗人力时间过长,降低测试效率,且因人为疏忽容易出错遗漏。



技术实现要素:

本发明所要解决的技术问题是:提供一种生成自动化执行策略的方法、系统、设备及存储介质,利用java编写自定义类加载器、java反射技术和第三方工具包jdom,开发一个命令行工具,通过该工具及相关选项,最终生成目标testng.xml。

本发明为解决上述技术问题采用以下技术方案:

一种生成自动化执行策略的方法,包括如下步骤:

步骤1,通过命令行处理程序解析传入的命令行参数,识别jar包文件并转换输出为list<url>,同时初始化过滤级别和过滤规则;

步骤2,使用list<url>初始化自定义类加载器,遍历list<url>,解析获取其中的测试类名称,并使用初始化后的自定义类加载器加载到jvm中,最后存到map<string,list<class>>中,key为jar包名称,value为url标识的jar包中解析出的测试类列表;

步骤3,遍历list<class>,获取测试class,解析其中拥有@test注解的测试方法,存放在map<string,list<string>>,key为类名称,value为该类中的测试方法名列表;

步骤4,使用步骤2生成的map<string,list<class>>和步骤3生成的map<string,list<string>>,解析map<string,list<class>>和map<string,list<string>>中的数据,生成testng.xml文件。

作为本发明方法的一种优选方案,所述步骤2的具体过程如下:

使用步骤1生成的list<url>,初始化testclassloader对象,然后解析jar包文件,依次遍历其中的类文件,获取类名称并调用testclassloader对象load方法加载到jvm中,并根据步骤1设定的过滤级别和规则筛选出符合要求的类名,存放到list<class>中,最后使用jar包名称和list<class>初始化jarinfo,存放到list<jarinfo>。

作为本发明方法的一种优选方案,所述步骤3的具体过程如下:

使用步骤2生成的list<jarinfo>,依序遍历每个jarinfo对象,然后获取该对象下的list<class>,遍历该列表,使用该列表中的项初始化classparser对象,通过java反射获取拥有@test注解的测试方法名和该注解下description属性,同时验证是否满足设定的过滤级别和规则,利用满足要求的测试方法初始化testmethod对象,然后逐个存放在list<testmethod>;最后再获取类注解story的value属性,和生成的list<testmethod>一起用于初始化testclassinfo对象,存放在list<testclassinfo>中。

作为本发明方法的一种优选方案,所述步骤4的具体过程如下:

遍历步骤2生成的list<jarinfo>,list<jarinfo>中每个jarinfo对应生成testng.xml中的一个test元素,name属性即为包名;然后使用步骤3生成的list<testclassinfo>,遍历解析,每个testclassinfo对应testng.xml中的一个class元素,然后遍历list<testmethod>,每个testmethod对应testng.xml中的一个include元素;最终生成testng.xml文件。

一种基于所述生成自动化执行策略的方法的系统,该系统包括main模块、自定义类加载器、类解析器和目标文件生成器;

所述main模块用于通过命令行处理程序解析传入的命令行参数,识别jar包文件并转换输出为list<url>,同时初始化过滤级别和过滤规则;

自定义类加载器用于使用list<url>初始化自定义类加载器,遍历list<url>,解析获取其中的测试类名称,并使用初始化后的自定义类加载器加载到jvm中,最后存到map<string,list<class>>中,key为jar包名称,value为url标识的jar包中解析出的测试类列表;

类解析器用于遍历list<class>,获取测试class,解析其中拥有@test注解的测试方法,存放在map<string,list<string>>,key为类名称,value为该类中的测试方法名列表;

目标文件生成器用于解析map<string,list<class>>和map<string,list<string>>中的数据,生成testng.xml文件。

一种计算机设备,包括存储器、处理器,以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述生成自动化执行策略的方法的步骤。

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述生成自动化执行策略的方法的步骤。

本发明采用以上技术方案与现有技术相比,具有以下技术效果:

本发明通过编写自定义类加载器加载jar包中的测试类,并利用反射解析出类中相关测试方法,按照规则生成testng.xml文件。主要解决了以下两个问题:一、随着自动化测试案例量逐渐增多,导致手工配置testng.xml耗时耗力,效率低的问题;二、解决因手动配置导致的遗漏或配置错误问题。

附图说明

图1是本发明一种生成自动化执行策略的方法的流程图。

具体实施方式

下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本发明主要利用java编写自定义类加载器、java反射技术和第三方工具包jdom,开发一个命令行工具,通过该工具及相关选项,最终生成目标testng.xml。

系统架构或场景:

根据测试策略需要,选取全部或者部分测试案例进行打包,然后使用打包后的文件作为输入,并指定筛选级别和规则,通过类加载模块和类解析模块,获取满足相关要求的测试案例;如果不指定,就是获取全部测试案例;最后使用生成模块,按照指定映射规则,生成目标文件。

测试案例库:已编写完成的自动化测试脚本

打包工具:eclipse

解析引擎:负责加载并解析类,同时按照过滤规则过滤出相关案例

生成文件:按照映射规则,生成目标文件

系统或场景所涉及的具体模块:

main.java:负责解析命令行参数及程序的入口类,重点是解析命令行参数,识别传入的jar包文件转换成url类,保存到list<url>中;

testclassloader.java:自定义类加载器,负责遍历解析main.java模块中保存在list中的jar文件,并加载测试类,存到map<string,list<class>>中,使用jar包名作为key,value为list,存放jar包中解析出的类;

classparser.java:类解析器,负责解析类中拥有@test注解的方法,存放在map<string,list<string>>,使用类名作为key,value为list,用于存放解析出来的方法名;

testngxmlcreator.java:目标文件生成器,负责使用testclassloader.java和classparser.java生成的map,解析map中的数据,最终生成testng.xml。

图1所示为一种生成自动化执行策略的方法的流程,具体步骤如下:

1、首先main模块通过命令行处理程序(或者主类、入口类)解析传入的命令行参数,识别jar包文件并转换输出为list<url>,同时初始化过滤级别和过滤规则;

2、testclassloader.java首先使用main.java模块中生成list<url>,初始化testclassloader对象,然后解析jar文件(使用url去初始化jarfile对象,然后解析jarfile获取其中的测试类名称),依次遍历其中的类文件,获取类名称并调用testclassloader对象load方法加载到jvm中,并根据过滤级别和规则筛选出符合要求的类名,存放到list<class>中,最后使用jar包名称和list<class>初始化jarinfo,存放到list<jarinfo>;

3、classparser.java首先使用testclassloader获取的list<jarinfo>,依序遍历每个jarinfo对象,然后获取该对象下的list<class>,遍历该列表中,使用列表项初始化classparser对象,通过java反射获取拥有@test注解的测试方法名和该注解下description属性,同时验证是否满足设定的过滤级别和规则,对满足要求的用于初始化testmethod对象,然后逐个存放在list<testmethod>;最后在获取类注解story的value属性,和生成的list<testmethod>一起用于初始化testclassinfo对象,存放在list<testclassinfo>中;

4、testngxmlcreator.java:负责使用testclassloader.java和classparser.java生成的map,解析map中的数据,最终生成testng.xml。首先遍历testclassloader.java生成的list<jarinfo>,该list<jarinfo>每个jarinfo对应生成testng.xml中的一个test元素,name属性即为包名;然后使用classparser.java生成的list<testclassinfo>,遍历解析,每个testclassinfo对应testng.xml中的一个class元素,然后遍历list<testmethod>对应的测试方法列表,每个testmethod对应testng.xml中的一个include元素;最终生成testng.xml文件。

首先使用jar命令或者eclipse把编写的test案例相关的java文件打成jar包,存放到文件夹下。打开cmd,执行命令,指定输出文件夹,输入可以是目录或者jar包;如果是目录必须使用-d选项指明;执行后,会在输出文件夹下生成testng.xml。然后把输出的testng.xml和jar包存放到相同文件夹下,执行命令。

以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1