CN115629965A - 文档测试方法、装置、设备、介质及程序产品 - Google Patents
文档测试方法、装置、设备、介质及程序产品 Download PDFInfo
- Publication number
- CN115629965A CN115629965A CN202211185957.9A CN202211185957A CN115629965A CN 115629965 A CN115629965 A CN 115629965A CN 202211185957 A CN202211185957 A CN 202211185957A CN 115629965 A CN115629965 A CN 115629965A
- Authority
- CN
- China
- Prior art keywords
- test data
- document
- column
- test
- template file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/186—Templates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种文档测试方法、装置、设备、介质及程序产品,本发明涉及移动互联技术领域。该方法包括:获取测试数据,其中,所述测试数据为用于生成复杂表格的数据;获取具有设定插值格式的模板文件;在每遍历一次测试数据时,向所述模板文件中插入表格标签,并将所遍历到的测试数据插入新增的表格标签;在遍历完所述测试数据的情况下,根据插入测试数据的模板文件生成包含复杂表格的目标文档,根据所述目标文档确定文档测试结果。本发明的技术方案提供一种具有复杂表格的文档的生成方式,实现动态生成表格中嵌套表格的目标文档,解决了固定的文档模板不适用于生成具有复杂表格的文档的问题。
Description
技术领域
本发明实施例涉及移动互联技术领域,尤其涉及一种文档测试方法、装置、设备、介质及程序产品。
背景技术
随着电子办公的普及,各种业务系统根据不同的业务需求,可能生成具有复杂表格的文档。如果系统迭代升级,则文档生成代码需经测试通过后才能上线使用。
通常的测试文档生成的方法包括:根据写好的代码获取到数据进行加工处理成需要生成文档的测试数据,制作一个固定的文档模板,采用插值方式通过将获取到的测试数据的数据属性名放到文档模板上对应数据的位置,借助一些生成文档框架生成想要类型的文档。然后,启动测试工具进行单元测试,测试生成文档的效果。其中,测试工具通常基于junit4与springboottest等方式实现的测试工具。
然而,对于行列数不确定的表格,目前的单元测试方法所采用的固定的文档模板不再适用,无法通过固定的文档模板的方式生成具有复杂表格的文档。
发明内容
本发明实施例提供一种文档测试方法、装置、设备、介质及程序产品,可以解决相关技术中固定的文档模板不适用于生成具有复杂表格的文档的问题。
第一方面,本发明实施例提供了一种文档测试方法,包括:
获取测试数据,其中,所述测试数据为用于生成复杂表格的数据;
获取具有设定插值格式的模板文件;
在每遍历一次测试数据时,向所述模板文件中插入表格标签,并将所遍历到的测试数据插入新增的表格标签;
在遍历完所述测试数据的情况下,根据插入测试数据的模板文件生成包含复杂表格的目标文档,根据所述目标文档确定文档测试结果。
第二方面,本发明实施例还提供了一种文档测试装置,该装置包括:
数据获取模块,用于获取测试数据,其中,所述测试数据为用于生成复杂表格的数据;
文件获取模块,用于获取具有设定插值格式的模板文件;
表格标签插入模块,用于在每遍历一次测试数据时,向所述模板文件中插入表格标签,并将所遍历到的测试数据插入新增的表格标签;
文档生成模块,用于在遍历完所述测试数据的情况下,根据插入测试数据的模板文件生成包含复杂表格的目标文档,根据所述目标文档确定文档测试结果。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明实施例中任一所述的文档测试方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的文档测试方法。
第五方面,本发明实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如本发明实施例中任一所述的文档测试方法。
本发明实施例中,通过在每遍历一次测试数据时,向所述模板文件中插入表格标签,并将所遍历到的测试数据插入新增的表格标签;在遍历完所述测试数据的情况下,根据插入测试数据的模板文件生成包含复杂表格的目标文档,提供一种新的文档生成方式以实现动态生成具有表格中嵌套表格的目标文档,解决了固定的文档模板不适用于生成具有复杂表格的文档的问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的一种文档测试方法的流程图;
图2a为本发明实施例提供的另一种文档测试流程的示意图;
图2b为本发明实施例提供的又一种文档测试流程的示意图;
图3为本发明实施例提供的又一种文档测试方法的流程图;
图4为本发明实施例提供的又一种文档测试方法的流程图;
图5为本发明实施例提供的一种文档测试装置的结构框图;
图6为本发明实施例提供的一种电子设备的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
对于生成不同类型的文档,如PDF或Word等文档,需要制作不同类型的模板。例如,PDF文档通过html(Hyper Text Markup Language,超文本标记语言)模板的方式进行生成。Word文档采用XML(eXtensible Markup Language,可扩展标记语言)模板的方式进行生成。需要说明的是,不同类型的文档的模板格式虽然不同,但是文档测试方式相似,均可以采用本发明实施例提供的测试方法。
本发明提供的文档测试方法实际上是为了测试文档生成代码,在每次修改完文档生成代码后,均需要测试修改效果,只有通过测试的文档生成代码才能使用。
图1为本发明实施例提供的一种文档测试方法的流程图。该方法可以适用于对生成文档的代码进行单元测试的情况。该方法可以通过文档测试装置来执行,该装置可以通过软件和/或硬件实现,并设置于电子设备中。
如图1所示,该方法包括:
S110、获取测试数据。
其中,测试数据为生成文档的单元测试中用于生成文档的数据。具体地,所述测试数据为用于生成复杂表格的数据。例如,测试数据可以查询数据库获取。或者,测试数据可以通过测试代码生成。需要说明的是,在通过测试代码生成测试数据时,可以通过代码模拟初始化环境,加载IOC(Inversion of Control,控制反转)容器等阶段,无需真实执行初始化环境,加载容器等,从而,可以避免目前单元测试方法因启动时需要初始化环境,加载IOC容器等,导致用户无法在短时间内生成文档,排查错误的问题。
需要说明的是,IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。应用程序无需直接在代码中new相关的对象,应用程序由IOC容器进行组装。
图2a为本发明实施例提供的另一种文档测试流程的示意图。如图2a所示,文档测试流程包括参数获取部分210、测试代码运行部分220和文档输出部分230。对于参数获取部分210,可以通过查询数据库获取到复杂表格的测试数据。或者,图2b为本发明实施例提供的又一种文档测试流程的示意图。如图2b所示,文档测试流程包括参数获取部分210、测试代码运行部分220和文档输出部分230。对于参数获取部分210,还可以通过基于JAVA编写的测试代码生成测试数据。
S120、获取具有设定插值格式的模板文件。
其中,模板文件为生成文档的基础文件,采用模板文件和测试数据生成目标文档。对于生成不同类型的文档,需要采用不同类型的模板文件。例如,模板文件可以包括html模板或XML模板等。
设定插值格式为符合模板引擎语法要求的格式。例如,用户编辑模板文件的插值格式得到符合模板引擎语法的模板文件,并将模板文件存入模板库。当用户需要修改模板文件时,可以通过查询模板库修改模板文件,并将修改后的模板文件保存到模板库。需要说明的是,此时的模板文件可以在需要插入表格的位置留出空白区域,用于在生成文档的过程中动态插入表格。由于表格的行列数由测试数据决定,无法预先预判需要预留的空白区域的尺寸,可以根据历史文档中表格的占用区域预留空白区域。或者,还可以设置表格预留的空白区域周围的文字对表格的环绕格式,实现文字布局随着空白区域尺寸的变化而自适应调整。
示例性地,获取具有设定差值格式的模板文件具体包括:获取符合FreeMarker模板引擎语法的插值格式的模板文件。其中,FreeMarker是一款模板引擎,即一种基于模板和数据生成输出文本的通用工具。FreeMarker是一个JAVA类库。
如图2a和2b所示,可以通过FreeMarker遍历未知行列数表格的html文件,获取具有设定插值格式的模板文件。
S130、在每遍历一次测试数据时,向所述模板文件中插入表格标签,并将所遍历到的测试数据插入新增的表格标签。
其中,表格标签,即html中的table标签,用于表示这个表格的框架。通过表格标签定义表格属性,包括边框宽度、内框宽度值、文字与边框距离值和表格宽度等。此外,还分别定义表格的行属性,包括行高度、行的背景色、文字的水平对齐方式等。以及,还分别定义表格的单元格属性,包括单元格宽度、背景色、文字的水平对齐方式和文字的垂直对齐方式等。
示例性地,在每遍历一次测试数据时,向所述模板文件中插入表格标签,并将所遍历到的测试数据插入新增的表格标签具体包括:逐列遍历所述测试数据。对于遍历到的所述测试数据的每一列,根据当前列对应的行向所述模板文件插入表格标签,将遍历到的测试数据插入新增的表格标签。
具体地,逐列遍历所述测试数据,包括:按照测试数据对应的列的顺序对所述测试数据进行遍历;对当前列包含的每一行对应的相邻下一列的测试数据进行逐行遍历。
由于测试数据为有序字符串,逐列遍历测试数据可以按照第一列第一行、第一列第一行对应的第二列的N行,以及第二列的第i(i∈N)行对应的第三列的M行,……规律遍历测试数据。假设测试数据对应一个3*3的表格,且第2行第2列包含一个2*1的子表格,表1示出一个3行3列的表格,且第2行第2列包含一个2行1列的表格。
以表1示出的表格为例,首先遍历第一列第一行的数据r1c1,随后,遍历第一列第一行对应的第二列的N行的数据。此处为第二列的第一行的数据r1c2,随后,再遍历第二列第一行对应的第三列的M行的数据。此处为第三列第一行的数据r1c3。由于不存在第四列数据,则遍历第一列第二行的数据r2c1,随后,遍历第一列第二行对应的第二列的N行的数据。此处为顺序遍历第二列的第二行的第一个数据r2c2(1),以及第二列的第二行的第二个数据r2c2(2)。然后,遍历第二列的第二行对应的第三列的第二行的数据r2c3。然后,遍历第一列的第三行的数据r3c1,随后,遍历第一列的第三行对应的第二列的第三行的数据r3c2,,最后,遍历第二列的第三行对应的第三列的第三行的数据r3c3。
需要说明的是,上述示例仅是以3*3的表格为例,并不是限定测试数据中包含的表格数据只能是3行3列的数据。
一些实施例中,对于遍历到的所述测试数据的每一列,根据当前列对应的行向所述模板文件插入表格标签,将遍历到的测试数据插入新增的表格标签,具体包括:
对于遍历到的所述测试数据的每一列,根据当前列向所述模板文件插入第一表格标签,将遍历到的测试数据插入所述第一表格标签;
判断所述测试数据中是否存在当前列相邻的下一列;
若是,则对于当前列包含的每一行,根据所述当前列相邻的下一列向所述模板文件插入对应数量的第二表格标签;
对于当前列包含的每一行,将所述当前列相邻的下一列对应的测试数据逐行插入所述第二表格标签。
沿用上述测试数据中的表格数据对应一个3*3的表格,且第2行第2列包含一个2*1的子表格的例子。对于遍历到的测试数据的第一列,根据遍历到的测试数据的属性判断是否存在第一列相邻的第二列。若包含第二列,则根据第一列向html模板文件插入一个table标签,并将遍历到的数据r1c1插入新增的table标签。对于第一列第一行,根据第二列第一行向html模板文件再插入一个table标签,并将遍历到的数据r1c2插入新增的table标签。如果第二列第一行种包含一个二行一列的子表格,则在根据第二列第一行向html模板文件插入一个table标签时,将单元格属性设置为2,并将遍历到的数据插入新增的table标签。对于第二列第一行,判断是否存在第三列。如果存在第三列,则对于第二列的第一行,根据第三列第一行向html模板文件再插入一个table标签,并将遍历到的数据r1c3插入新增的table标签。由于不存在第四列,则继续遍历第一列第二行的测试数据,根据第一列第二行向html模板文件再插入一个table标签,并将遍历到的数据r2c1插入新增的table标签。由于测试数据中存在第二列,根据第一列第二行对应的第二列第二行向html模板文件再插入一个table标签。由于第二行第二列包含一个二行一列的子表格,那么,通过设置table标签的单元格属性,实现在第二行第二列包含两个单元格,并将遍历到的数据r2c2(1)、r2c2(2)分别插入对应的单元格内。由于测试数据中存在第三列,根据第二列第二行对应的第三列第二行向html模板文件再插入一个table标签,并将遍历到的第三列第二行的数据r2c3插入到新增的table标签。以此类推,直至将所有测试数据插入到表格为止。
如图2a所示,通过查询数据库的方式获取测试数据,在测试代码运行部分220,通过FreeMarker模板引擎将获取到的测试数据插入到具有设定插值格式的html模板文件,将html模板文件转换成PDF文件。
如图2b所示,通过测试代码生成测试数据,在测试代码运行部分220,通过PowerMock框架对生成文档的方法进行单元测试,模拟在测试方法时不需要用到的函数方法,以及跳过启动环境阶段。通过FreeMarker模板引擎将获取到的测试数据插入到具有设定插值格式的html模板文件,将html模板文件转换成PDF文件。
S140、在遍历完所述测试数据的情况下,根据插入测试数据的模板文件生成包含复杂表格的目标文档,根据所述目标文档确定文档测试结果。
其中,复杂表格为通过测试数据确定文档中表格的行数和列数的表格,本发明实施例中的复杂表格具有无法预知行数和列数的特点,因此,无法通过固定模板生成文档进行测试的方式对本发明不再适用。
文档测试结果表示生成文档的代码的单元测试结果,包括文档达到测试人员的预期效果,或者,文档未达到测试人员的预期效果。可以通过用户对目标文档的评价信息确定文档测试结果。
示例性地,在遍历完所述测试数据的情况下,将插入测试数据的模板文件确定为包含复杂表格的目标文档,根据设定存储路径保存所述目标文档。逐个遍历测试数据直至遍历到所有的测试数据时,确定遍历完测试数据。由于在遍历测试数据的过程中,实时向模板文件插入table标签,并会将每次遍历到的数据实时插入到新增的表格标签,所以在遍历完测试数据的情况下,实现所有测试数据插入模板文件,因此,可以将模板文件转换成特定类型的文档,即生成具有复杂表格的目标文档。其中,特定类型的文档可以为PDF文档,还可以为Word文档等。将目标文档保存到预先配置的设定存储路径下。其中,设定存储路径为文档测试前,由用户预先配置的文件存储目录。
具体地,所述根据所述目标文档确定文档测试结果,包括:显示所述目标文档;获取所述目标文档对应的评价信息,根据所述评价信息确定文档测试结果。如图2a和2b所示,通过文档输出部分230输出PDF文件到显示装置。例如,从设定存储路径下读取目标文档,并显示目标文档,以供测试人员查看文档生成是否正确,获取测试人员对目标文档的评价信息。其中,评价信息包括文档正确或文档错误。文档正确指新生成的文档达到测试人员的预期效果。文档错误指新生成的文档未达到测试人员的预期效果。根据评价信息确定文档测试结果。
本发明实施例通过在每遍历一次测试数据时,向所述模板文件中插入表格标签,并将所遍历到的测试数据插入新增的表格标签;在遍历完所述测试数据的情况下,根据插入测试数据的模板文件生成包含复杂表格的目标文档。本发明提供一种新的文档生成方式以实现动态生成具有表格中嵌套表格的目标文档,解决了固定的文档模板不适用于生成具有复杂表格的文档的问题。
图3为本发明实施例提供的又一种文档测试方法的流程图。本实施例在上述实施例的基础上,对获取测试数据进行进一步限定。如图3所示,该方法包括:
S301、获取查询参数,根据所述查询参数查询数据库,得到测试数据。
其中,所述测试数据为用于生成复杂表格的数据。查询参数可以为前端页面传到后台的参数。查询参数可以由测试人员输入前端页面,例如,查询参数可以包括流程编号字段值等。
示例性地,获取前端页面传入的查询参数,采用数据库查询语言基于查询参数查询数据库获取测试数据。可选地,可以通过多表关联查询数据库的方式获取测试数据。
S302、获取符合FreeMarker模板引擎语法的插值格式的模板文件。
S303、按照测试数据对应的列的顺序对所述测试数据进行遍历。
S304、对当前列包含的每一行对应的相邻下一列的测试数据进行逐行遍历。
S305、对于遍历到的所述测试数据的每一列,根据当前列向所述模板文件插入第一表格标签,将遍历到的测试数据插入所述第一表格标签。
S306、判断所述测试数据中是否存在当前列相邻的下一列,若是,则执行S307,否则,执行S309。
S307、对于当前列包含的每一行,根据所述当前列相邻的下一列向所述模板文件插入对应数量的第二表格标签。
S308、对于当前列包含的每一行,将所述当前列相邻的下一列对应的测试数据逐行插入所述第二表格标签。
S309、判断是否遍历完所述测试数据,若是,则执行S310,否则执行S303。
S310、将插入测试数据的模板文件确定为包含复杂表格的目标文档,根据设定存储路径保存所述目标文档。
S311、显示所述目标文档。
S312、获取所述目标文档对应的评价信息,根据所述评价信息确定文档测试结果。
本发明实施例通过多表关联查询数据库的方式获取测试数据,提高了数据查询效率,节约了测试时间,从而提高测试效果。
图4为本发明实施例提供的又一种文档测试方法的流程图。本实施例在上述实施例的基础上,对获取测试数据进行进一步限定。如图4所示,该方法包括:
S401、获取基类,其中,所述基类包括PowerMock框架的注解使用方式。
其中,基类为包含所有实体共性的类。可以通过从基类中集成所有信息,再添加新信息的方式构成新的类。在构建新类的过程中,新建立的类为“子类”或者“派生类”,而被继承的包含相同特征的类称为“父类”或者“基类”。派生类继承了基类的全部成员,并且可以增加基类所没有的数据成员和成员函数,以满足描述新对象的需求。
PowerMock是一个单元测试模拟框架,通过提供定制的类加载器以及一些字节码篡改技巧的应用,PowerMock实现了对静态方法、构造方法、私有方法以及Final方法的模拟支持,对静态初始化过程的移除等强度的功能。PowerMock的目的就是在当前已经被大家所熟悉的接口上通过添加极少的方法和注释来实现额外的功能。
所谓的模拟(mock)是指在单元测试中,假如我们要测试的类A中需要依赖B类的一个实例,而B类的这个实例在单元测试代码中不容易获取到。例如,需要测试的类A中需要依赖一个B类的实例,通常这个B类的实例只有在用户登录系统时才能获取到,为了获取到B类的实例而在单元测试代码中进行一系列登录授权的操作显然太繁琐了。可以通过模拟的方式模一个B类的实例。
注解可以看作是对一个类/方法的一个扩展的模板,每个类/方法按照注解类中的规则,来为类/方法注解不同的参数,在用到的地方可以得到不同的类/方法中注解的各种参数与值。
PowerMock框架的注解包括:
@RunWith(PowerMockRunner.class)用于告诉JUnit使用PowerMockRunner进行测试。
@PrepareForTest(value={x.class})用于列举所有需要测试的类(例如x.class),适用于模拟final类或有final,private,static,native方法的类。
@PowerMockIgnore({"javax.management.*"})为了解决使用powermock后,提示classloader错误。
S402、测试代码继承所述基类,通过注解将文档生成函数的静态类注入所述测试代码。
由于在使用生成文档的函数方法时,该方法主要涉及到的静态类SequenceUtil.class的使用。由于静态类SequenceUtil.class的使用只跟生成的文档名字有关,对测试影响不大,可以通过模拟的方式模拟静态类SequenceUtil.class。
示例性地,测试代码集成基类,通过@PrepareForTest(value={SequenceUtil.class})将需要测试的类注入所述测试代码。
S403、采用基于PowerMock框架的测试代码生成测试数据。
示例性地,通过采用基于PowerMock框架的测试代码中的map方法动态生成指定行列数的测试数据。其中,map是js中的一种数据结构,允许存储键值对,键和值可以是任意类型的数据,如果其中存在的键,值会被替换。map()方法返回一个新数组,新数组中的元素为原始数组中的每个元素调用函数处理后得到的值。map()方法按照原始数组元素顺序依次处理元素。
具体地,基于PowerMock框架新建测试类,测试类继承基类,且包含多层map()方法,可以实现测试数据具有多列多行,且每行里面又可以对应未知行数的效果。通过模拟测试数据,可以实现根据测试代码里查询出来的数据生成不确定行列数表格的文档。
采用PowerMock框架对生成文档的方法进行单元测试,模拟在测试方法时不需要用到的函数方法,以及跳过启动环境阶段,使得在测试的时候更加快速的进行测试,生成目标文档。
S404、获取符合FreeMarker模板引擎语法的插值格式的模板文件。
S405、按照测试数据对应的列的顺序对所述测试数据进行遍历。
S406、对当前列包含的每一行对应的相邻下一列的测试数据进行逐行遍历。
S407、对于遍历到的所述测试数据的每一列,根据当前列向所述模板文件插入第一表格标签,将遍历到的测试数据插入所述第一表格标签。
S408、判断所述测试数据中是否存在当前列相邻的下一列,若是,则执行S409,否则,执行S411。
S409、对于当前列包含的每一行,根据所述当前列相邻的下一列向所述模板文件插入对应数量的第二表格标签。
S410、对于当前列包含的每一行,将所述当前列相邻的下一列对应的测试数据逐行插入所述第二表格标签。
S411、判断是否遍历完所述测试数据,若是,则执行S412,否则执行S405。
S412、将插入测试数据的模板文件确定为包含复杂表格的目标文档,根据设定存储路径保存所述目标文档。
S413、显示所述目标文档。
S414、获取所述目标文档对应的评价信息,根据所述评价信息确定文档测试结果。
本发明实施例通过模拟测试数据,无需查询数据库,节约了连接数据库时间和数据查询时间,并且采用PowerMock框架对生成文档的方法进行单元测试,模拟在测试方法时不需要用到的函数方法,以及跳过服务启动环节,快速测试生成文档的函数方法,并生成文档,解决了相关技术中每次测试文档时均需要启动服务耗费大量时间的问题,节约了服务启动时间,提高了测试效率。
图5为本发明实施例提供的一种文档测试装置的结构框图。该文档测试装置可以采用软件和/或硬件的形式实现,该文档测试装置可以配置于电子设备中。通过该文档测试装置执行本发明任意实施例提供的一种文档测试方法。如图5所示,该文档测试装置包括:数据获取模块510、文件获取模块520、表格标签插入模块530和文档生成模块540。
数据获取模块510,用于获取测试数据,其中,所述测试数据为用于生成复杂表格的数据;
文件获取模块520,用于获取具有设定插值格式的模板文件;
表格标签插入模块530,用于在每遍历一次测试数据时,向所述模板文件中插入表格标签,并将所遍历到的测试数据插入新增的表格标签;
文档生成模块540,用于在遍历完所述测试数据的情况下,根据插入测试数据的模板文件生成包含复杂表格的目标文档,根据所述目标文档确定文档测试结果。
本发明实施例提供一种文档测试装置,通过在每遍历一次测试数据时,向所述模板文件中插入表格标签,并将所遍历到的测试数据插入新增的表格标签;在遍历完所述测试数据的情况下,根据插入测试数据的模板文件生成包含复杂表格的目标文档,本发明提供一种新的文档生成方式以实现动态生成具有表格中嵌套表格的目标文档,解决了固定的文档模板不适用于生成具有复杂表格的文档的问题。
可选地,表格标签插入模块530具体用于:
逐列遍历所述测试数据;
对于遍历到的所述测试数据的每一列,根据当前列对应的行向所述模板文件插入表格标签,将遍历到的测试数据插入新增的表格标签。
可选地,表格标签插入模块530具体还用于:
对于遍历到的所述测试数据的每一列,根据当前列向所述模板文件插入第一表格标签,将遍历到的测试数据插入所述第一表格标签;
判断所述测试数据中是否存在当前列相邻的下一列;
若是,则对于当前列包含的每一行,根据所述当前列相邻的下一列向所述模板文件插入对应数量的第二表格标签;
对于当前列包含的每一行,将所述当前列相邻的下一列对应的测试数据逐行插入所述第二表格标签。
可选地,表格标签插入模块530具体还用于:
按照测试数据对应的列的顺序对所述测试数据进行遍历;
对当前列包含的每一行对应的相邻下一列的测试数据进行逐行遍历。
可选地,数据获取模块510具体用于:
采用基于PowerMock框架的测试代码生成测试数据。
可选地,数据获取模块510具体还用于:
通过采用基于PowerMock框架的测试代码中的map方法动态生成指定行列数的测试数据。
可选地,还包括:
注解模块,用于在采用基于PowerMock框架的测试代码生成测试数据之前,获取基类,其中,所述基类包括PowerMock框架的注解使用方式;
测试代码继承所述基类,通过注解将文档生成函数的静态类注入所述测试代码。
可选地,数据获取模块510具体还用于:
获取查询参数,根据所述查询参数查询数据库,得到测试数据。
可选地,文件获取模块520具体用于:
获取符合FreeMarker模板引擎语法的插值格式的模板文件。
可选地,文档生成模块540具体用于:
在遍历完所述测试数据的情况下,将插入测试数据的模板文件确定为包含复杂表格的目标文档,根据设定存储路径保存所述目标文档。
可选地,文档生成模块540具体还用于:
显示所述目标文档;
获取所述目标文档对应的评价信息,根据所述评价信息确定文档测试结果。
本发明实施例所提供的文档测试装置可执行本发明任意实施例所提供的文档测试方法,具备执行方法相应的功能模块和有益效果。
图6为本发明实施例提供的一种电子设备的结构框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图6所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如文档测试方法。
在一些实施例中,文档测试方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的文档测试方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行文档测试方法。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声音输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
本发明实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现如本申请任一实施例所提供的文档测试方法。
计算机程序产品在实现的过程中,可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (15)
1.一种文档测试方法,其特征在于,包括:
获取测试数据,其中,所述测试数据为用于生成复杂表格的数据;
获取具有设定插值格式的模板文件;
在每遍历一次测试数据时,向所述模板文件中插入表格标签,并将所遍历到的测试数据插入新增的表格标签;
在遍历完所述测试数据的情况下,根据插入测试数据的模板文件生成包含复杂表格的目标文档,根据所述目标文档确定文档测试结果。
2.根据权利要求1所述的方法,其特征在于,所述在每遍历一次测试数据时,向所述模板文件中插入表格标签,并将所遍历到的测试数据插入新增的表格标签,包括:
逐列遍历所述测试数据;
对于遍历到的所述测试数据的每一列,根据当前列对应的行向所述模板文件插入表格标签,将遍历到的测试数据插入新增的表格标签。
3.根据权利要求2所述的方法,其特征在于,所述对于遍历到的所述测试数据的每一列,根据当前列对应的行向所述模板文件插入表格标签,将遍历到的测试数据插入新增的表格标签,包括:
对于遍历到的所述测试数据的每一列,根据当前列向所述模板文件插入第一表格标签,将遍历到的测试数据插入所述第一表格标签;
判断所述测试数据中是否存在当前列相邻的下一列;
若是,则对于当前列包含的每一行,根据所述当前列相邻的下一列向所述模板文件插入对应数量的第二表格标签;
对于当前列包含的每一行,将所述当前列相邻的下一列对应的测试数据逐行插入所述第二表格标签。
4.根据权利要求2所述的方法,其特征在于,所述逐列遍历所述测试数据,包括:
按照测试数据对应的列的顺序对所述测试数据进行遍历;
对当前列包含的每一行对应的相邻下一列的测试数据进行逐行遍历。
5.根据权利要求1所述的方法,其特征在于,所述获取测试数据,包括:
采用基于PowerMock框架的测试代码生成测试数据。
6.根据权利要求5所述的方法,其特征在于,所述采用基于PowerMock框架的测试代码生成测试数据,包括:
通过采用基于PowerMock框架的测试代码中的map方法动态生成指定行列数的测试数据。
7.根据权利要求5所述的方法,其特征在于,在采用基于PowerMock框架的测试代码生成测试数据之前,还包括:
获取基类,其中,所述基类包括PowerMock框架的注解使用方式;
测试代码继承所述基类,通过注解将文档生成函数的静态类注入所述测试代码。
8.根据权利要求1所述的方法,其特征在于,所述获取测试数据,包括:
获取查询参数,根据所述查询参数查询数据库,得到测试数据。
9.根据权利要求1所述的方法,其特征在于,所述获取具有设定插值格式的模板文件,包括:
获取符合FreeMarker模板引擎语法的插值格式的模板文件。
10.根据权利要求1所述的方法,其特征在于,所述在遍历完所述测试数据的情况下,根据插入测试数据的模板文件生成包含复杂表格的目标文档,包括:
在遍历完所述测试数据的情况下,将插入测试数据的模板文件确定为包含复杂表格的目标文档,根据设定存储路径保存所述目标文档。
11.根据权利要求1所述的方法,其特征在于,所述根据所述目标文档确定文档测试结果,包括:
显示所述目标文档;
获取所述目标文档对应的评价信息,根据所述评价信息确定文档测试结果。
12.一种文档测试装置,其特征在于,包括:
数据获取模块,用于获取测试数据,其中,所述测试数据为用于生成复杂表格的数据;
文件获取模块,用于获取具有设定插值格式的模板文件;
表格标签插入模块,用于在每遍历一次测试数据时,向所述模板文件中插入表格标签,并将所遍历到的测试数据插入新增的表格标签;
文档生成模块,用于在遍历完所述测试数据的情况下,根据插入测试数据的模板文件生成包含复杂表格的目标文档,根据所述目标文档确定文档测试结果。
13.一种电子设备,其特征在于,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-11中任一项所述的文档测试方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-11中任一所述的文档测试方法。
15.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序在被处理器执行时实现如权利要求1-11中任一项所述的文档测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211185957.9A CN115629965A (zh) | 2022-09-27 | 2022-09-27 | 文档测试方法、装置、设备、介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211185957.9A CN115629965A (zh) | 2022-09-27 | 2022-09-27 | 文档测试方法、装置、设备、介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115629965A true CN115629965A (zh) | 2023-01-20 |
Family
ID=84905200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211185957.9A Pending CN115629965A (zh) | 2022-09-27 | 2022-09-27 | 文档测试方法、装置、设备、介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115629965A (zh) |
-
2022
- 2022-09-27 CN CN202211185957.9A patent/CN115629965A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8601438B2 (en) | Data transformation based on a technical design document | |
US10114619B2 (en) | Integrated development environment with multiple editors | |
CN111784108B (zh) | 一种主数据管理平台的建模方法和装置 | |
US20150278190A1 (en) | Web server system, dictionary system, dictionary call method, screen control display method, and demonstration application generation method | |
CN112463261B (zh) | 接口调用方法、装置、电子设备、介质及产品 | |
CN111125064A (zh) | 一种生成数据库模式定义语句的方法和装置 | |
CN112926008A (zh) | 生成表单页面的方法、装置、电子设备和存储介质 | |
CN115617888A (zh) | 数据导入方法、装置、设备、存储介质及产品 | |
CN112860584A (zh) | 基于工作流模型的测试方法及装置 | |
US9104573B1 (en) | Providing relevant diagnostic information using ontology rules | |
CN112784588A (zh) | 用于标注文本的方法、装置、设备以及存储介质 | |
CN116974929A (zh) | 自动化测试工具构建方法、自动化测试方法及其相关设备 | |
US20240037325A1 (en) | Ability to add non-direct ancestor columns in child spreadsheets | |
CN116432624A (zh) | 一种微服务api文档生成方法、装置、设备、存储介质 | |
CN116414689A (zh) | 一种基于反射机制的接口参数校验方法及系统 | |
CN113642295B (zh) | 页面排版方法、装置及计算机程序产品 | |
CN115629965A (zh) | 文档测试方法、装置、设备、介质及程序产品 | |
CN114968235A (zh) | 一种页面表单生成方法、装置、计算机设备及存储介质 | |
CN114579466A (zh) | 构建测试用例和代码测试的方法、装置、设备及介质 | |
CN110019177A (zh) | 规则存储的方法和装置 | |
CN113239670A (zh) | 一种业务模板上传的方法、装置、计算机设备及存储介质 | |
CN116755684B (zh) | OAS Schema的生成方法、装置、设备及介质 | |
CN118133794B (zh) | 一种表格配置方法、装置、设备及存储介质 | |
CN112650809B (zh) | 一种格式化树结构数据的方法、装置及电子设备 | |
CN118466911B (zh) | 一种推荐方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |