发明内容
针对现有自动化测试存在会导致自动化测试终止、自动化测试失败以及提前人工检查无法保证在测试前是否会生成异常的技术问题,本发明目的在于提供一种自动化测试异常处理方法及自动化测试系统,以确保测试准确性、减轻测试人员工作量、缩短测试周期、降低测试成本。
为实现上述目的,本发明提供了一种自动化测试异常处理方法,所述方法包括如下步骤:(1)在自动化测试前,遍历自动化测试脚本所在的目录中的文件并导出文件信息;(2)读取所述文件信息并根据所述文件信息判断相应文件是否为备份文件,若是备份文件则删除,若不是备份文件则继续读取下一文件信息并判断,直到删除所有备份文件;(3)重新遍历删除所有备份文件后的所述目录中的文件并导出文件信息。
在一实施例中,步骤(3)之后进一步包括:(4)读取步骤(3)中导出的文件信息并根据所述文件信息判断相应文件是否为测试用例文件,若是测试用例文件则将版本号作为键、文件名作为值一一对应保存到字典中,若不是测试用例文件则继续读取下一文件信息并判断,直到遍历所有文件信息;(5)将所述字典中的所有键输出,并根据键选取版本号中的最大键版本;(6)逐一读取输出的键并判断是否为所述最大键版本,若不是所述最大键版本则删除所述字典中所述键对应的文件,直至所述字典中仅保留所述最大键版本的文件。
为实现上述目的,本发明还提供了一种自动化测试系统,包括:初始文件遍历模块、备份文件判断模块以及第二文件遍历模块;所述初始文件遍历模块,用于在自动化测试前,遍历自动化测试脚本所在的目录中的文件并导出文件信息;所述备份文件判断模块,用于读取所述文件信息并根据所述文件信息判断相应文件是否为备份文件,若是备份文件则删除,若不是备份文件则继续读取下一文件信息并判断,直到删除所有备份文件;所述第二文件遍历模块,用于重新遍历删除所有备份文件后的所述目录中的文件并导出文件信息。
在一实施例中,所述系统进一步包括:测试用例文件判断模块、最大键版本选取模块以及文件处理模块:所述测试用例文件判断模块,用于读取所述第二文件遍历模块中导出的文件信息并根据所述文件信息判断相应文件是否为测试用例文件,若是测试用例文件则将版本号作为键、文件名作为值一一对应保存到字典中,若不是测试用例文件则继续读取下一文件信息并判断,直到遍历所有文件信息;所述最大键版本选取模块,用于将所述字典中的所有键输出,并根据键选取版本号中的最大键版本;所述文件处理模块,用于逐一读取输出的键并判断是否为所述最大键版本,若不是所述最大键版本则删除所述字典中所述键对应的文件,直至所述字典中仅保留所述最大键版本的文件。
本发明的优点在于:在自动化测试前先对文件进行检测,并对检测出的干扰文件提前做处理,通过遍历文件目录的方式对目录中文件进行检测,通过将版本号作为键、文件名作为值一一对应存入字典的方式方便调用,通过max对字典的值进行对比,找出最大的版本号;与现有技术相比,本发明可以确保测试准确性、减轻测试人员工作量、缩短测试周期以及降低测试成本。
具体实施方式
下面结合附图对本发明提供的自动化测试异常处理方法及自动化测试系统做详细说明。
参考图1,本发明所述的自动化测试异常处理方法的流程示意图。所述的方法包括如下步骤:S11:在自动化测试前,遍历自动化测试脚本所在的目录中的文件并导出文件信息;S12:读取所述文件信息并根据所述文件信息判断相应文件是否为备份文件,若是备份文件则删除,若不是备份文件则继续读取下一文件信息并判断,直到删除所有备份文件;S13:重新遍历删除所有备份文件后的所述目录中的文件并导出文件信息。以下给出详细解释。
S11:在自动化测试前,遍历自动化测试脚本所在的目录中的文件并导出文件信息。
具体的,可以通过调用os.listdir函数遍历自动化测试脚本所在的目录中的文件,并将导出的文件信息存到列表中。
S12:读取所述文件信息并根据所述文件信息判断相应文件是否为备份文件,若是备份文件则删除,若不是备份文件则继续读取下一文件信息并判断,直到删除所有备份文件。
由于在自动化测试过程中会生成一些自动化脚本(自动化测试用例文件、自动化关键字文件、自动化库等)的备份文件,这些备份文件名只是多了.bak,其他与原文件名一样,因此,可以通过检测文件信息是否包括.bak来判断是否为备份文件。
具体的,可以通过调用for...in命令循环读取所述文件信息,并调用re.search函数以‘.+.bak’为匹配项匹配读取的文件信息以判断相应文件是否为备份文件。如果是备份文件则删除该文件,如果不是备份文件则读取并检测下个文件直到遍历完所有文件,从而避免在调用时会出现异常,导致自动化测试失败的问题。
S13:重新遍历删除所有备份文件后的所述目录中的文件并导出文件信息。
具体的,可以通过再调用os.listdir函数重新遍历删除所有备份文件后的的所述目录中的文件并将文件信息存到列表中。此时的列表中不存在备份文件,从而避免在调用时会出现异常,导致自动化测试失败的问题。
本发明进一步对测试用例文件进行了优化。优选的,本发明所述的自动化测试异常处理方法在步骤S13之后进一步包括:S14:读取步骤S13中导出的文件信息并根据所述文件信息判断相应文件是否为测试用例文件,若是测试用例文件则将版本号作为键、文件名作为值一一对应保存到字典中,若不是测试用例文件则继续读取下一文件信息并判断,直到遍历所有文件信息;S15:将所述字典中的所有键输出,并根据键选取版本号中的最大键版本;S16:逐一读取输出的键并判断是否为所述最大键版本,若不是所述最大键版本则删除所述字典中所述键对应的文件,直至所述字典中仅保留所述最大键版本的文件。通过上述操作,使得仅保留最大键版本的测试用例文件,避免了现有技术中自动化测试时因搜索到两个测试用例文件而报错,终止自动化测试的问题。
具体的,步骤S14可以通过调用for...in命令循环读取所述文件信息并调用re.search函数以‘(项目名_v版本_case.txt)’为匹配项匹配读取的文件信息以判断相应文件是否为测试用例文件。如果是测试用例文件,可以利用匹配对象的元组特性将版本号作为键、文件名作为值一一对应保存到字典中(如果只有一个测试用例文件,则字典中只有一个版本号对应一个文件名);如果不是测试用例文件,则读取并检测下个文件直到遍历完所有文件。
具体的,步骤S15可以通过调用_dict.key()函数将所述字典中的所有键输出,并调用max命令根据键选取版本号中的最大键版本。因在判定测试用例文件时,将版本号作为键、文件名作为值一一对应保存到字典中,故可以通过键来选出最大键版本(即最接近现在测试的版本,如果只有一个测试用例文件则选出该用例文件名对应的版本号)。
具体的,步骤S16可以通过调用for...in命令逐一读取输出的键并判断是否为所述最大键版本。调用for...in命令逐一读取函数_dict.key()输出的版本号(键),如果版本号不是选出的最大键版本则删除字典中该版本号对应的文件,直至字典中仅保留最大键版本的文件为止。
在自动化测试前先进行本发明提供的自动化测试异常处理方法所述的操作,通过遍历文件目录的方式对目录中文件进行检测,通过将版本号作为键、文件名作为值一一对应存入字典的方式方便调用,通过max对字典的值进行对比,找出最大的版本号;与现有技术相比,本发明可以确保测试准确性、减轻测试人员工作量、缩短测试周期以及降低测试成本。
以下结合附图2对本发明所述的自动化测试异常处理方法做进一步说明。参考图2,本发明所述的自动化测试异常处理方法一实施例的流程示意图。
本发明公开的检测并删除干扰自动化测试的备份和同类文件的方法,适用于WiFi产品自动化测试环境。通过将本发明所述的方法写入自动化脚本的setup中,在自动化测试前先运行setup中该方法的脚本。
脚本内容如下:
1)调用os.listdir函数遍历自动化测试脚本所在的目录中的文件,并将文件信息存到列表中;
2)调用for...in命令循环读取列表中的文件信息,并调用re.search函数以‘.+.bak’为匹配项匹配读取的文件信息以检测该文件是否为备份文件;如果是备份文件则删除该文件,如果不是备份文件则读取并检测下个文件直到遍历完成整个列表;
3)对删除所有备份文件后的的所述目录中的文件,再调用os.listdir函数重新读取目录中的文件并将文件信息存到列表中;
4)调用for...in命令循环读取列表中的文件信息,并调用re.search函数以‘(%s_v)(\d+)(_case.txt)’为匹配项(项目名_v版本_case.txt)检测该文件是否为测试用例文件;如果是测试用例文件则利用匹配对象的元组特性将版本号作为键和文件名作为值一一对应保存到字典中(如果只有一个测试用例文件,则字典中只有一个版本号对应一个文件名),如果不是则读取并检测下个文件直到遍历完成整个列表;
5)调用函数_dict.key()函数将字典中的键(版本号)输出出来,并调用max命令选出版本号中的最大键版本(即最接近现在测试的版本,如果只有一个测试用例文件则选出该用例文件名对应的版本号);
6)调用for...in命令逐一读取_dict.key()函数输出的键,如果键不是选出的最大键版本则删除字典中该键对应的测试用例文件,直至字典中仅保留最大键版本的测试用例文件为止。
本发明还提供了一种自动化测试系统,包括:初始文件遍历模块、备份文件判断模块以及第二文件遍历模块。
所述初始文件遍历模块,用于在自动化测试前,遍历自动化测试脚本所在的目录中的文件并导出文件信息。具体的,初始文件遍历模块可以通过调用os.listdir函数遍历自动化测试脚本所在的目录中的文件,并将导出的文件信息存到列表中。
所述备份文件判断模块,用于读取所述文件信息并根据所述文件信息判断相应文件是否为备份文件,若是备份文件则删除,若不是备份文件则继续读取下一文件信息并判断,直到删除所有备份文件。具体的,备份文件判断模块可以通过调用for...in命令循环读取所述文件信息,并调用re.search函数以‘.+.bak’为匹配项匹配读取的文件信息以判断相应文件是否为备份文件。如果是备份文件则删除该文件,如果不是备份文件则读取并检测下个文件直到遍历完所有文件,从而避免在调用时会出现异常,导致自动化测试失败的问题。
所述第二文件遍历模块,用于重新遍历删除所有备份文件后的所述目录中的文件并导出文件信息。具体的,第二文件遍历模块可以通过调用os.listdir函数重新遍历删除所有备份文件后的的所述目录中的文件并将文件信息存到列表中。此时的列表中不存在备份文件,从而避免在调用时会出现异常,导致自动化测试失败的问题。
本发明进一步对测试用例文件进行了优化。优选的,本发明所述的自动化测试系统进一步包括:测试用例文件判断模块、最大键版本选取模块以及文件处理模块。
所述测试用例文件判断模块,用于读取所述第二文件遍历模块中导出的文件信息并根据所述文件信息判断相应文件是否为测试用例文件,若是测试用例文件则将版本号作为键、文件名作为值一一对应保存到字典中,若不是测试用例文件则继续读取下一文件信息并判断,直到遍历所有文件信息。具体的,测试用例文件判断模块可以通过调用for...in命令循环读取所述文件信息并调用re.search函数以‘(项目名_v版本_case.txt)’为匹配项匹配读取的文件信息以判断相应文件是否为测试用例文件。如果是测试用例文件,可以利用匹配对象的元组特性将版本号作为键、文件名作为值一一对应保存到字典中(如果只有一个测试用例文件,则字典中只有一个版本号对应一个文件名);如果不是测试用例文件,则读取并检测下个文件直到遍历完所有文件。
所述最大键版本选取模块,用于将所述字典中的所有键输出,并根据键选取版本号中的最大键版本。具体的,最大键版本选取模块可以通过调用_dict.key()函数将所述字典中的所有键输出,并调用max命令根据键选取版本号中的最大键版本。因在判定测试用例文件时,将版本号作为键、文件名作为值一一对应保存到字典中,故可以通过键来选出最大键版本(即最接近现在测试的版本,如果只有一个测试用例文件则选出该用例文件名对应的版本号)。
所述文件处理模块,用于逐一读取输出的键并判断是否为所述最大键版本,若不是所述最大键版本则删除所述字典中所述键对应的文件,直至所述字典中仅保留所述最大键版本的文件。具体的,文件处理模块可以通过调用for...in命令逐一读取输出的键并判断是否为所述最大键版本。调用for...in命令逐一读取函数_dict.key()输出的版本号(键),如果版本号不是选出的最大键版本则删除字典中该版本号对应的文件,直至字典中仅保留最大键版本的文件为止。
本发明所述的自动化测试系统在自动化测试前仅保留最大键版本的测试用例文件,避免了现有技术中自动化测试时因搜索到两个测试用例文件而报错,终止自动化测试的问题。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。