一种基于UnitTest并行执行的自动化测试方法技术

技术编号:19691632 阅读:33 留言:0更新日期:2018-12-08 11:07
本发明专利技术提供一种基于UnitTest并行执行的自动化测试方法,采用多线程同时运行测试用例,与传统的多线程运行脚本的方式相比,大大节省了运行脚本的时间,同时还能二次运行失败的测试用例,提高了测试效率。采用多线程动态运行测试用例的方式,减少了测试用例运行时长,节省了测试运行时间。通过在WebUI自动化测试方法中引入docker容器技术,通过docker容器技术定制测试环境容器镜像,通过容器镜像来启动多个测试环境,从而减少执行机配置环境麻烦的问题,并减少物理机器的需求数。

【技术实现步骤摘要】
一种基于UnitTest并行执行的自动化测试方法
本专利技术涉及服务器测试领域,尤其涉及一种基于UnitTest并行执行的自动化测试方法。
技术介绍
在webUI自动化测试领域中,自动化执行测试用例的方式有一般借助于第三方测试套件实现,例如在使用python编写的自动化测试中,一般使用unittest进行测试用例的自动化运行,unittest能实现将预先设置好的测试用例按照顺序进行执行,并在执行结束后,输出测试结果。同一个机器上也可以运行多个unittest线程实现并行执行,但是并行的方式存在一个缺陷,即不能合理的均衡每个线程的执行时间,即某一个线程执行完了,可能其他的线程还需要等待很长时间才能完成。浪费了大量的测试时间。而且在webUI自动化测试领域中测试机与测试脚本不分离,消耗硬件资源;脚本串行执行效率低下,自动化执行时间过长。
技术实现思路
为了克服上述现有技术中的不足,本专利技术提供一种基于UnitTest并行执行的自动化测试方法,其特征在于,方法包括:在宿主机上安装docker模块,基于docker模块配置容器镜像;启动容器镜像,创建Python模块;在容器镜像上预设所要执行的测试用例;使用Python模块搜索系统中的所有测试用例,并将测试用例的名称写入容器镜像中;将测试文件赋予准备状态,运行unittest测试线程,读取状态为准备的测试用例对测试文件进行测试,并将测试用例状态置为运行;运行结束后,如果测试用例运行成功,将测试文件的状态设为完成态;在Python模块上输出测试报告。优选地,步骤运行结束之后还包括:如果测试用例对测试文件测试失败,将测试文件状态改为错误态。优选地,步骤运行结束之后还包括:调取错误态的测试文件,将错误态的测试文件赋予准备状态,运行unittest测试线程,读取状态为准备的测试用例对错误态的测试文件进行测试,并将测试用例状态置为运行;运行结束后,如果测试用例运行成功,将测试文件的状态设为完成态;如果测试用例对测试文件测试失败,将测试文件状态改为错误态;再次调取错误态的测试文件,将错误态的测试文件赋予准备状态,运行unittest测试线程,读取状态为准备的测试用例对错误态的测试文件进行测试,直至到达预设测试次数;运行结束后,统计所有的测试结果,在Python模块上输出测试报告。优选地,基于数据库下载容器仓库中预设的容器镜像。优选地,步骤启动容器镜像还包括:通过宿主机的端口访问selenium/hub服务;启动selenium/hub容器。优选地,步骤启动容器镜像还包括:通过待测主机的端口访问selenium/hub服务;启动selenium/node容器,通过selenium/hub服务所在的服务器检查容器的启动情况。优选地,步骤创建Python模块还包括:根据待创建Python模块的版本,在数据库中获取待创建Python模块。优选地,步骤创建Python模块还包括:将selenium依赖包和testng依赖包,配置到Python模块安装路径的Lib下的SitePackag下,创建Python模块。优选地,步骤运行测试用例,在Python模块上输出测试报告还包括:运行runner.py文件,runner.py文件将多个测试用例加入到多线程进行执行测试;在seleniumnode节点浏览器上获取测试过程,查询测试用例的测试过程。优选地,步骤在Python模块上输出测试报告之后还包括:测试人员访问系统的report目录下,打开index.html,显示本次测试执行情况;测试系统通过配置测试人员的邮箱地址将测试报告以邮件的形式发送。从以上技术方案可以看出,本专利技术具有以下优点:本专利技术采用多线程同时运行测试用例,与传统的多线程运行脚本的方式相比,大大节省了运行脚本的时间,同时还能二次运行失败的测试用例,提高了测试效率。采用多线程动态运行测试用例的方式,减少了测试用例运行时长,节省了测试运行时间。本专利技术通过在WebUI自动化测试方法中引入docker容器技术,通过docker容器技术定制测试环境容器镜像,通过容器镜像来启动多个测试环境,从而减少执行机配置环境麻烦的问题,并减少物理机器的需求数。本专利技术将docker容器技术和现有的webUI测试框架结合,减少测试所需要的机器数。通过docker容器技术可以定制测试环境镜像,启动镜像创建相同的测试环境,为搭建测试环境节省大量的时间。在安装docker的宿主机上启动多个seleniumnode容器节点,节省了大量的机器资源需求。并且容器启动速度快,节省了测试环境的部署。将selenium的相关依赖包,testng的相关依赖包,将这些依赖包中放到Python安装路径的Lib下的SitePackag下。在测试用例初始化时,通过指定浏览器名称和远程执行机node的远程url,从而达到预期在那个node上执行用例的目标。测试人员访问系统的report目录下,打开index.html,显示本次测试执行情况;测试系统通过配置测试人员的邮箱地址将测试报告以邮件的形式发送,便于测试人员了解测试过程和结果。本专利技术相比于传统的unittest测试套件,unittest是将测试用例写死在程序中,由于不知道每个测试用例的运行时长,所以每个测试套件的时间是不可控的。就会导致有的测试线程会先结束,而有的测试线程要运行很长时间才能结束。这就浪费了很多时间。而本专利技术采用则是动态运行测试用例,能使测试用例的时间实现最大化的均衡,最大可能的节省测试用例运行时间。附图说明为了更清楚地说明本专利技术的技术方案,下面将对描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为基于UnitTest并行执行的自动化测试方法流程图。图2为基于UnitTest并行执行的自动化测试方法实施例流程图具体实施方式本专利技术提供一种基于UnitTest并行执行的自动化测试方法,如图1所示,方法包括:S1,在宿主机上安装docker模块,基于docker模块配置容器镜像;S2,启动容器镜像,创建Python模块;S3,在容器镜像上预设所要执行的测试用例;S4,使用Python模块搜索系统中的所有测试用例,并将测试用例的名称写入容器镜像中;S5,将测试文件赋予准备状态,运行unittest测试线程,读取状态为准备的测试用例对测试文件进行测试,并将测试用例状态置为运行;S6,运行结束后,如果测试用例运行成功,将测试文件的状态设为完成态;S7,在Python模块上输出测试报告。本专利技术是基于unittest基础之上,实现多线程测试用例均衡执行,并且自动执行失败测试用例,基本思路是将所有的测试用例的名称写入数据文件中,系统中开启多个线程,然后每个线程脚本都从数据库中读取测试用例的名称,每读取一个测试用例,就使用unitest运行测试用例。并最终获取每个测试用例的结果并进行汇总。最后生成测试报告。为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将运用具体的实施例及附图,对本专利技术保护的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本专利技术一部分实施例,而非全部的实本文档来自技高网...

【技术保护点】
1.一种基于UnitTest并行执行的自动化测试方法,其特征在于,方法包括:在宿主机上安装docker模块,基于docker模块配置容器镜像;启动容器镜像,创建Python模块;在容器镜像上预设所要执行的测试用例;使用Python模块搜索系统中的所有测试用例,并将测试用例的名称写入容器镜像中;将测试文件赋予准备状态,运行unittest测试线程,读取状态为准备的测试用例对测试文件进行测试,并将测试用例状态置为运行;运行结束后,如果测试用例运行成功,将测试文件的状态设为完成态;在Python模块上输出测试报告。

【技术特征摘要】
1.一种基于UnitTest并行执行的自动化测试方法,其特征在于,方法包括:在宿主机上安装docker模块,基于docker模块配置容器镜像;启动容器镜像,创建Python模块;在容器镜像上预设所要执行的测试用例;使用Python模块搜索系统中的所有测试用例,并将测试用例的名称写入容器镜像中;将测试文件赋予准备状态,运行unittest测试线程,读取状态为准备的测试用例对测试文件进行测试,并将测试用例状态置为运行;运行结束后,如果测试用例运行成功,将测试文件的状态设为完成态;在Python模块上输出测试报告。2.根据权利要求1所述的基于UnitTest并行执行的自动化测试方法,其特征在于,步骤运行结束之后还包括:如果测试用例对测试文件测试失败,将测试文件状态改为错误态。3.根据权利要求2所述的基于UnitTest并行执行的自动化测试方法,其特征在于,步骤运行结束之后还包括:调取错误态的测试文件,将错误态的测试文件赋予准备状态,运行unittest测试线程,读取状态为准备的测试用例对错误态的测试文件进行测试,并将测试用例状态置为运行;运行结束后,如果测试用例运行成功,将测试文件的状态设为完成态;如果测试用例对测试文件测试失败,将测试文件状态改为错误态;再次调取错误态的测试文件,将错误态的测试文件赋予准备状态,运行unittest测试线程,读取状态为准备的测试用例对错误态的测试文件进行测试,直至到达预设测试次数;运行结束后,统计所有的测试结果,在Python模块上输出测试报告。4.根据权利要求1所述的基于UnitTest并行执行的自动化测试方法,其特征在于,基于数据库下载容器仓库中预设的容器镜像。5.根据权利要求1所述的基...

【专利技术属性】
技术研发人员:王亮
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1