一种web自动化测试方法及系统与流程

文档序号:29493786发布日期:2022-04-06 14:18阅读:379来源:国知局
一种web自动化测试方法及系统与流程

1.本发明涉及自动化测试技术领域,尤其是一种web自动化测试方法及系统。


背景技术:

2.目前ui(user interface design,界面设计)自动化工具大多是基于selenium实现的,selenium通过webdriver与浏览器交互,通过自定义测试脚本实现web测试。
3.使用selenium进行web自动化测试,无法在遵从restful协议的web中使用,且需要自行编写测试脚本执行且在测试时必须使用浏览器,使用的依赖性、复杂度偏高,无法支持在linux/unix服务器中后端自动运行测试案例。
4.现有专利号为202110506580的专利申请提供了一种实现web应用自动化测试的方法及装置,提供了一种通过playwright代码录制功能生成测试案例代码,并在代码中手动增加断言代码并截图,以playwright无头模式运行编辑后的代码。该专利技术中每次录制的代码仅能支持一种测试数据测试(代码录制时人工输入的测试数据)使用,无法适用于一个测试用例、多个测试数据的场景。


技术实现要素:

5.本发明提供了一种web自动化测试方法及系统,用于解决现有测试方法无法适用于多个测试场景的问题。
6.为实现上述目的,本发明采用下述技术方案:
7.本发明第一方面提供了一种web自动化测试方法,所述测试方法包括以下步骤:
8.获取客户端上传的录制代码,所述录制代码为用户在客户端通过playwright代码录制命令得到;
9.根据所述录制代码,生成pytest测试用例的脚本文件,所述测试用例中包括测试数据和断言数据,一组所述测试数据至少对应一组断言数据;
10.响应于用户选择的测试用例及配置参数,以无头模式调用对应脚本文件的执行命令,发送至celery中异步执行web测试任务。
11.进一步地,用户在客户端录制代码的具体过程为:
12.用户在前端发起代码录制指令,后端执行拼接playwright代码录制命令,打开浏览器;
13.用户在新打开的浏览器窗口中进行操作,操作完成后关闭所述浏览器窗口,生成代码文件,所述操作为当前测试用例需测试的执行动作。
14.进一步地,所述根据所述录制代码,生成pytest测试用例的脚本文件的具体过程为:
15.根据测试用例id,从数据库中获取用例信息,在指定目录下创建测试文件;
16.创建以测试用例id为名称的class对象,增加pytest参数注解方法;
17.创建测试函数,测试函数参数包括playwright参数page、测试数据、断言数据;
18.获取所述录制代码,从所述录制代码中提取部分代码作为所述测试函数的运行代码;
19.将所述运行代码中存在预设关键字的代码行用逗号分割,将测试数据作为当前代码行被匹配序列的下标;
20.在所述运行代码的结尾,增加断言判断,遍历断言参数列表,根据断言类型添加断言语句。
21.进一步地,所述用例信息包括用例名称、测试数据和断言数据。
22.进一步地,所述从所述录制代码中提取部分代码作为所述测试函数的运行代码具体为:
23.在所述录制代码中,提取关键字“with”第一次出现位置,该位置加两行与关键字“page.close”之间的代码,作为所述运行代码。
24.进一步地,所述创建测试文件之后,创建以测试用例id为名称的class对象之前,还包括步骤:判断是否需要登录,若否,则创建以测试用例id为名称的class对象,若是,则创建前置函数。
25.进一步地,所述创建前置函数的具体过程为:
26.获取测试用例配置的登录数据,创建前置fixure函数login,作用范围为当前对象;
27.从所述录制代码中提取关键字“page.goto”第一次出现位置,与关键字“with”第一次出现位置加两行之间的代码作为登录函数的执行代码;
28.遍历登录函数的执行代码,将代码中存在关键字“fill”代码行以逗号分割,将登录数据作为当前代码行被匹配序列的下标。
29.进一步地,所述配置参数包括录制视频选项和截图选项。
30.本发明第二方面提供了一种web自动化测试系统,包括客户端和服务端,
31.所述客户端用于接收指令,通过playwright代码录制命令得到录制代码;
32.所述服务端用于根据所述录制代码生成pytest测试用例的脚本文件,,并响应于用户选择的测试用例及配置参数,以无头模式调用对应脚本文件的执行命令,发送至celery中异步执行测试任务;所述测试用例中包括测试数据和断言数据,一组所述测试数据至少对应一组断言数据。
33.进一步地,所述服务端包括应用管理模块、测试案例管理模块、pytest测试案例脚本生成模块和测试用例执行模块;
34.所述应用管理模块用于维护应用信息,创建测试应用,填写应用名称、应用描述和应用地址;
35.所述测试案例管理模块用于创建测试用例,维护测试用例名称、测试用例描述、登录判断、测试数据和断言数据;
36.所述pytest测试案例脚本生成模块接收客户端上传的录制代码,并基于所述录制代码生成pytest测试用例脚本文件;
37.所述测试用例执行模块用于测试用例的执行,以及测试记录的生成,支持测试报告的查看。
38.本发明第二方面的所述网络服务的控制装置能够实现第一方面及第一方面的各
实现方式中的方法,并取得相同的效果。
39.发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
40.本发明将通过playwright得到的录制代码自动重写为pytest测试案例代码,利用pytest的参数配置特性,使一组测试数据对应多组断言数据,实现一个测试用例适用多个测试数据的问题,并输出整理测试报告,实现测试用例重复自动执行,提高测试效率。
附图说明
41.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
42.图1是本发明所述方法实施例的流程示意图;
43.图2是本发明所述方法实施例中客户端实现方式的流程示意图;
44.图3是本发明所述方法实施例中服务端实现方式的流程示意图;
45.图4是本发明所述系统实施例的结构示意图。
具体实施方式
46.为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
47.本发明实施例的实现依赖于由客户端与服务端两部分,用户在服务端通过在线创建测试用例,输入用例结构化数据(如:用例描述、输入与断言数据等),用户登录客户端请求自己名下测试用例清单,选择要录制代码的测试用例由客户端调用代码录制命令录制代码并上传到服务端中。服务端在收到代码文件后,在测试脚本目录自动生成以test开头的测试脚本文件,在测试脚本文件中自动创建测试对象,将前/后置条件、获取测试数据等方法与录制的代码分别创建以test_开头的函数名,将录制代码函数前增加pytest参数注解(parametrize),并将测试数据变量名作为函数参数,将录制脚本中需要填写的数据按顺序替换为测试数据变量,将断言信息添加到录制代码所在方法中,完成pytest测试脚本的自动生成。用户在服务端可选择要执行的测试用例,采用pytest的分布式插件(pytest-xdist)并发执行多个测试用例,并借助pytest-html模块自动生成可视化测试报告。同时,针对多个应用并行测试的需求,服务端调用celery异步任务的方式高并发支持测试案例执行,大幅减轻测试脚本的编写工作,提升web自动化测试效率。
48.如图1所示,本发明实施例提供了一种web自动化测试方法,所述测试方法包括以下步骤:
49.s1,获取客户端上传的录制代码,所述录制代码为用户在客户端通过playwright代码录制命令得到;
50.s2,根据所述录制代码,生成pytest测试用例的脚本文件,所述测试用例中包括测试数据和断言数据,一组所述测试数据至少对应一组断言数据;
51.s3,响应于用户选择的测试用例及配置参数,以无头模式调用对应脚本文件的执行命令,发送至celery中异步执行web测试任务。
52.如图2所示,步骤s1中,用户在客户端录制代码的具体过程为:
53.用户登录客户端,通过接口查询其名下创建的测试案例清单,选择要录制代码的测试用例,向后端发起代码录制命令,测试用例中包含测试应用信息,如系统地址信息;
54.用户在前端发起代码录制指令,后端执行拼接playwright代码录制命令,打开浏览器;
55.用户在新打开的浏览器窗口中进行操作,操作完成后关闭所述浏览器窗口,生成代码文件,所述操作为当前测试用例需测试的执行动作。
56.生成录制代码后,用户在前端发起上传指令,后端将新录制的代码文件上传至服务端。
57.客户端在录制代码的过程中,还包括对用户验证的步骤,具体为:用户登录客户端后,调用接口验证用户合法性,用户验证通过后,调用测试案例查询接口查询其创建的测试案例清单。
58.如图3所示,步骤s2中,服务端接收客户端上传的录制代码内容。所述根据所述录制代码,生成pytest测试用例的脚本文件的具体过程为:
59.根据测试用例id,从数据库中获取用例信息,在指定目录下创建test+项目id+案例id为文件名的测试脚本文件,在测试脚本文件中引入playwright与pytest的常用模块;
60.根据案例id从数据库中获取测试数据列表和断言数据列表,创建以测试用例id为名称的class对象,增加pytest参数注解方法在对象中创建以test+run+案例id的方法,在方法前加入pytest的参数注解函数(pytest.mark.parametrize,参数化测试数据及断言数据,以顺序为基准进行匹配),函数参数根据是否需要登录处理添加fixure前置处理;创建测试函数,测试函数参数包括playwright参数page、测试数据、断言数据;
61.获取所述录制代码,从所述录制代码中提取部分代码作为所述测试函数的运行代码;
62.将所述运行代码中存在预设关键字的代码行用逗号分割,将测试数据作为当前代码行被匹配序列的下标;
63.在所述运行代码的结尾,增加断言判断,遍历断言参数列表,根据断言类型添加断言语句。所述断言类型包括文字、空间、路径和状态,添加的断言语句如assert page.url==assert_data[0];
[0064]
代码块组成完毕后,写入创建的test+项目id+案例id为文件名的测试脚本文件中并保存。
[0065]
所述用例信息包括用例名称、测试数据和断言数据。
[0066]
所述从所述录制代码中提取部分代码作为所述测试函数的运行代码具体为:
[0067]
在所述录制代码中,提取关键字“with”第一次出现位置,该位置加两行与关键字“page.close”之间的代码,作为所述运行代码。
[0068]
所述创建测试文件之后,创建以测试用例id为名称的class对象之前,还包括步
骤:判断是否需要登录,若否,则创建以测试用例id为名称的class对象,若是,则创建前置函数。
[0069]
所述创建前置函数的具体过程为:
[0070]
获取测试用例配置的登录数据,创建前置fixure函数login,作用范围为当前对象;
[0071]
从所述录制代码中提取关键字“page.goto”第一次出现位置,与关键字“with”第一次出现位置加两行之间的代码作为登录函数的执行代码;
[0072]
遍历登录函数的执行代码,将代码中存在关键字“fill”代码行以逗号分割,将登录数据作为当前代码行被匹配序列的下标。
[0073]
步骤s3中,用户在线选择要执行的测试用例集,选择是否需要录制视频、截图等参数,向后端发起测试用例执行指令,后端根据参数生成pytest测试用例执行命令,以无头模式调用发送至celery中异步执行该测试任务,系统自动生成测试记录,便于用户在线查看测试报告。所述配置参数包括录制视频选项和截图选项。
[0074]
如图4所示,本发明实施例提供了一种web自动化测试系统,包括服务端1和客户端2,
[0075]
所述客户端2用于接收指令,通过playwright代码录制命令得到录制代码;所述服务端1用于根据所述录制代码生成pytest测试用例的脚本文件,并响应于用户选择的测试用例及配置参数,以无头模式调用对应脚本文件的执行命令,发送至celery中异步执行测试任务;所述测试用例中包括测试数据和断言数据,一组所述测试数据至少对应一组断言数据。
[0076]
所述服务端1包括应用管理模块11、测试案例管理模块12、pytest测试案例脚本生成模块13和测试用例执行模块14;
[0077]
所述应用管理模块11用于维护应用信息,创建测试应用,填写应用名称、应用描述和应用地址;所述测试案例管理模块12用于创建测试用例,维护测试用例名称、测试用例描述、登录判断、测试数据和断言数据;所述pytest测试案例脚本生成模块13接收客户端上传的录制代码,并基于所述录制代码生成pytest测试用例脚本文件;所述测试用例执行模块14用于测试用例的执行,以及测试记录的生成,支持测试报告的查看。
[0078]
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1