一种基于UnitTest并行执行的自动化测试方法与流程

文档序号:16207978发布日期:2018-12-08 07:21阅读:610来源:国知局
一种基于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运行测试用例。并最终获取每个测试用例的结果并进行汇总。最后生成测试报告。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将运用具体的实施例及附图,对本发明保护的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本专利中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利保护的范围。

本实施例中,如图2所示,方法还包括:

s11,在宿主机上安装docker模块,基于docker模块配置容器镜像;

s12,启动容器镜像,创建python模块;

s13,在容器镜像上预设所要执行的测试用例;

s14,使用python模块搜索系统中的所有测试用例,并将测试用例的名称写入容器镜像中;

s15,将测试文件赋予准备状态,运行unittest测试线程,读取状态为准备的测试用例对测试文件进行测试,并将测试用例状态置为运行;

s21,运行结束后,如果测试用例运行成功,将测试文件的状态设为完成态;

s22,在python模块上输出测试报告。

当然在运行结束后如果测试用例未运行成功;

s16,如果测试用例对测试文件测试失败,将测试文件状态改为错误态。

s17,调取错误态的测试文件,将错误态的测试文件赋予准备状态,运行unittest测试线程,读取状态为准备的测试用例对错误态的测试文件进行测试,并将测试用例状态置为运行;

当然这里也存在成功与不成功两种状态。

s31,运行结束后,如果测试用例运行成功,将测试文件的状态设为完成态;

s32,统计所有的测试结果,在python模块上输出测试报告。

s18,如果测试用例对测试文件测试失败,将测试文件状态改为错误态;

s19,再次调取错误态的测试文件,将错误态的测试文件赋予准备状态,运行unittest测试线程,读取状态为准备的测试用例对错误态的测试文件进行测试,直至到达预设测试次数;

s20运行结束后,统计所有的测试结果,在python模块上输出测试报告。

本发明是基于unittest基础之上,实现多线程测试用例均衡执行,并且自动执行失败测试用例,基本思路是将所有的测试用例的名称写入数据文件中,系统中开启多个线程,然后每个线程脚本都从数据库中读取测试用例的名称,每读取一个测试用例,就使用unitest运行测试用例。并最终获取每个测试用例的结果并进行汇总。最后生成测试报告。

相比于传统的unittest测试套件,unittest是将测试用例写死在程序中,由于不知道每个测试用例的运行时长,所以每个测试套件的时间是不可控的。就会导致有的测试线程会先结束,而有的测试线程要运行很长时间才能结束。这就浪费了很多时间。而本发明采用则是动态运行测试用例,能使测试用例的时间实现最大化的均衡,最大可能的节省测试用例运行时间。

本实施例中,在宿主机上安装docker模块,基于docker模块配置容器镜像;

这样,基于容器技术,docker容器技术可以解决掉机器需求和环境搭建的问题。因为docker容器镜像并不包含linux内核且docker容器仓库中存在很多现成的容器镜像,下载下来就能使用,最重要的是docker容器镜像可以运行多份,每一份都是物理隔离的。基于数据库下载容器仓库中预设的容器镜像。

基于docker模块配置容器镜像之后,启动容器镜像,并创建python模块;

在测试用例中初始化准备工作中指定在那个seleniumnode上执行测试用例,也就是在容器镜像上预设所要执行的测试用例;运行测试用例,在python模块上输出测试报告。

本实施例中,在宿主机上安装docker模块,基于docker模块配置容器镜像之后,通过宿主机的端口访问selenium/hub服务;启动selenium/hub容器。

启动容器镜像,可以先基于数据库下载或者定制容器镜像,为了实现浏览器多版本的测试,可以从容器仓库中下载镜像。如dockerpullselenium/hub。

启动selenium/hub容器,方式可以为dockerrun-p宿主机的端口-d--name'selenium_hub'selenium/hub这样可以通过宿主机的端口来访问selenium/hub服务。

启动selenium/node容器,方式可以为:dockerrun-p-d--linkselenium_hub:hubselenium/vnc-node-firefox-debug,进一步的dockerrun-p-d--linkselenium_hub:hubselenium/vnc-node-chrome-debug,之后可以通过宿主机的端口来检查容器的启动情况,至此docker具体实施结束,已经成功在同一个机器中开启两个测试执行机。

完成启动selenium/hub容器和selenium/node容器之后,创建python模块;在容器镜像上预设所要执行的测试用例;运行测试用例,在python模块上输出测试报告。

本实施例中,在宿主机上安装docker模块,基于docker模块配置容器镜像之后,通过宿主机的端口访问selenium/hub服务;启动selenium/hub容器。创建python模块,这里的创建python模块可以根据待创建python模块的版本,在数据库中获取待创建python模块。python模块的安装方式可以采用测试人员手动安装,也可以采用系统基于下载获取完成后,自动安装。

再创建python模块前,先将selenium依赖包和testng依赖包,配置到python模块安装路径的lib下的sitepackag下。

可能以许多方式来实现本发明的方法以及装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法以及装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。

本实施例中,在宿主机上安装docker模块,基于docker模块配置容器镜像之后,通过宿主机的端口访问selenium/hub服务;启动selenium/hub容器。先将selenium依赖包和testng依赖包,配置到python模块安装路径的lib下的sitepackag下,创建python模块。之后运行测试用例,在python模块上输出测试报告。

这里可以运行runner.py文件,runner.py文件将多个测试用例加入到多线程进行执行测试;在seleniumnode节点浏览器上获取测试过程,查询测试用例的测试过程。

本发明运行了runner.py文件,此文件会将多个测试用例加入到多线程进行执行,可以看到多个seleniumnode节点,并且进行查找测试进程,当然所有的执行步骤都是按照测试用例编写的测试脚本一步一步来的执行。从查询测试过程的角度来看,可以实现按照步骤来查询。

本实施所述基于docker的webui的自动化测试方法,将docker容器技术与现存的自动化测试框架结合,通过容器镜像启动多个容器实例,且物理位置相对隔离。节省大量的测试机器资源,并因为容器的启动速度快,缩短了搭建测试环境的时间。

本发明通过引入docker容器技术,原来需要10台虚拟机的需求现在缩减为一台需求的需求,节省了大量的物理机器资源。从而提升物理机器的综合利用率。另外,多个虚拟机做相同的配置,过程繁琐,时间消耗较大,配置的过程中难免会出现人为的错误,针对测试环境我们可以定制容器镜像,通过启动镜像来完成相同配置的部署,在效率上得到较大的提升。

本发明将docker容器技术和现有的webui测试框架结合,减少测试所需要的机器数。通过docker容器技术可以定制测试环境镜像,启动镜像创建相同的测试环境,为搭建测试环境节省大量的时间。在安装docker的宿主机上启动多个seleniumnode容器节点,节省了大量的机器资源需求。并且容器启动速度快,节省了测试环境的部署。将selenium的相关依赖包,testng的相关依赖包,将这些依赖包中放到python安装路径的lib下的sitepackag下。

在测试用例初始化时,通过指定浏览器名称和远程执行机node的远程url,从而达到预期在那个node上执行用例的目标。

测试人员访问系统的report目录下,打开index.html,显示本次测试执行情况;测试系统通过配置测试人员的邮箱地址将测试报告以邮件的形式发送。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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