日志输出方法、装置、电子设备及介质与流程

专利2022-06-30  73


本说明书实施例涉及软件测试技术领域,尤其涉及一种日志输出方法、装置、电子设备及介质。



背景技术:

随着互联网业务的快速发展和更新迭代,自动化测试需要的测试用例也不断增加,当测试用例规模达到一定的量级如一万以上,回归的成本包括运行耗时成本和结果分析成本会变得非常高。因此,为提高自动化测试的执行效率,通常采用线程级的并行方案。在自动化测试的过程中,会产生大量的日志,作为对测试过程的记录以及分析测试结果的依据。然而,多线程并发执行测试用例,会导致不同测试用例的日志混杂在一起,这样就会给用例结果的分析和排查带来极大的成本。



技术实现要素:

本说明书实施例提供了一种日志输出方法、装置、电子设备及介质。

第一方面,本说明书实施例提供了一种日志输出方法,包括:通过多个线程,并发执行预先配置的用例集中的测试用例,其中,所述用例集包括多个测试用例,每个线程执行一个测试用例;针对所述每个线程,监听所执行的测试用例的启动事件以及结束事件,若监听到所执行的测试用例的启动事件,则创建该测试用例的缓存空间,并将该测试用例执行过程中记录的日志缓存到所述缓存空间,若监听到该测试用例的结束事件,则结束该测试用例的日志缓存,其中,不同测试用例的缓存空间是相互隔离的;输出所述用例集中每个测试用例的缓存空间中缓存的日志。

第二方面,本说明书实施例提供了一种日志输出装置,包括:用例执行模块,用于通过多个线程,并发执行预先配置的用例集中的测试用例,其中,所述用例集包括多个测试用例,每个线程执行一个测试用例;日志缓存模块,用于针对所述每个线程,监听所执行的测试用例的启动事件以及结束事件,若监听到所执行的测试用例的启动事件,则创建该测试用例的缓存空间,并将该测试用例执行过程中记录的日志缓存到所述缓存空间,若监听到该测试用例的结束事件,则结束该测试用例的日志缓存,其中,不同测试用例的缓存空间是相互隔离的;输出所述用例集中每个测试用例的缓存空间中缓存的日志。

第三方面,本说明书实施例提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述第一方面提供的日志输出方法的步骤。

第四方面,本说明书实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面提供的日志输出方法的步骤。

本说明书一个实施例提供的日志输出方法,针对在多线程模式下并发执行的测试用例,通过监听测试用例的启动事件以及结束事件,并在监听到测试用例的启动事件时,为该测试用例创建独立的缓存空间,从而将测试用例在执行过程中的日志记录到该缓存空间中,进而从各缓存空间中输出相应测试用例的日志。由于为并发执行的各测试用例创建的缓存空间相互隔离,使得不同测试用例的日志记录相互独立,互不干扰,能够避免出现不同测试用例的日志混杂在一起的情况,无需耗费大量人力资源进行日志辨识,在提高自动化测试运行效率的同时,有效地降低了对多线程模式下测试用例的结果分析成本以及失败用例的排查成本。

另外,通过监听用例的启动事件和结束事件,将日志记录精准到测试用例执行的生命周期,能够避免日志中出现无关该测试用例日志的记录对多线程模式下执行的测试用例的结果分析和失败用例排查带来干扰。

附图说明

图1为本说明书实施例第一方面提供的一种日志输出方法的流程图;

图2为本说明书实施例第一方面提供的一种示例性日志输出步骤流程图;

图3为本说明书实施例第一方面提供的基于一种示例性自动化测试框架的方案时序图;

图4为本说明书实施例第二方面提供的一种日志输出装置的模块框图;

图5为本说明书实施例第三方面提供的一种电子设备的结构示意图。

具体实施方式

为了更好的理解本说明书实施例提供的技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。本说明书实施例中,术语“多个”表示“两个以上”,即包括两个或大于两个的情况。

为了便于对本说明书实施例技术方案的理解,下面对本说明书实施例涉及的相关名词进行解释说明。

自动化测试,一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预设条件应包括正常条件和异常条件。具体来讲,是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。例如,主流的测试框架包括testng/junit。

测试用例,是自动化测试的用例程序,是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。

多线程,是指从软件或者硬件上实现多个线程并发执行的技术。

日志,是软件程序运行过程中输出的文本信息,常见的包括关键数据、运行逻辑等内容。

本说明书实施例提供的日志输出方法可以应用于执行测试用例的自动化测试过程的服务器或服务器上所运行的软件系统。

第一方面,图1示出了本说明书实施例提供的一种日志输出方法的流程图,请参阅图1,所述方法至少可以包括以下步骤s100-步骤s104。

步骤s100,通过多个线程,并发执行预先配置的用例集中的测试用例,其中,所述用例集包括多个测试用例,每个线程执行一个测试用例。

具体实施过程中,在自动化测试中启动用例测试后,可以触发主线程针对预先配置的用例集中的每个测试用例创建一个子线程,在创建的每个子线程中执行用例集中的一个测试用例,且不同子线程执行不同的测试用例,从而实现多线程模式下的自动化用例测试。需要说明的是,子线程的创建与用例集中的用例数量以及执行自动化测试的测试设备的处理能力相关。

举例来讲,用例集中包括n个测试用例,n为大于或等于2的整数,则需要针对每个测试用例创建一个运行该用例的子线程,共计需要创建n个子线程。在一种示例性应用场景中,测试设备最多能够并发执行m个子线程,若m小于n,则先针对用例集中的m个测试用例,创建m个子线程,这m个测试用例的选取可以是随机的,也可以是用例集中的前m个测试用例,具体根据需要设置。然后,等待有测试用例执行完后,再针对用例集中的剩余测试用例,创建子线程,直至执行完用例集中的所有测试用例。若m大于或等于n,则可以创建n个子线程,每个子线程执行一个测试用例。

可以理解的是,自动化测试需要在接收到外部测试指令的情况下执行。在一种可选的实施例中,可以通过用户输入测试指令启动用例的自动化测试。此时,在上述通过多个线程,并发执行预先配置的用例集中的测试用例之前,还包括:检测用户是否输入测试指令;若检测到用户输入的测试指令,则执行上述通过多个线程,并发执行预先配置的用例集中的测试用例的步骤。当然,在本说明书其他实施例中,也可以通过其他方式启动自动化测试。

步骤s102,针对所述每个线程,监听所执行的测试用例的启动事件以及结束事件,若监听到所执行的测试用例的启动事件,则创建该测试用例的缓存空间,并将该测试用例执行过程中记录的日志缓存到所述缓存空间,若监听到该测试用例的结束事件,则结束该测试用例的日志缓存,其中,不同测试用例的缓存空间是相互隔离的。

步骤s104,输出所述用例集中每个测试用例的缓存空间中缓存的日志。

可以理解的是,为了实现上述监听,需要预先注册监听器。因此,在执行上述步骤s100之前,还可以包括:在用例集中每个测试用例的入口处,注册第一监听机制,第一监听机制用于监听测试用例的启动事件;在用例集中每个测试用例的出口处,注册第二监听机制,第二监听机制用于监听测试用例的结束事件。

本说明书实施例中,测试用例的入口为表示测试用例即将开始执行的第一基准位置,例如,可以是测试用例执行的第一行代码,测试用例的出口为表示用例即将执行结束的第二基准位置,例如,可以是用例执行的最后一行代码。在测试用例要开始执行之前,预留第一监听机制,监听用例的启动事件,并且在测试用例要结束执行之前,预留第二监听机制,监听用例的结束事件。

作为一种实施方式,第一监听机制可以是before监听,第二监听机制可以是after监听。在测试用例的第一行代码前注册before监听,这样就会在执行测试用例的第一行代码之前通知监听器用例即将开始执行,监听器就可以监听到用例的启动事件。在测试用例的最后一行代码后注册before监听,这样就会在执行完测试用例的最后一行代码之后也就是即将退出用例执行时,通知监听器用例执行即将结束,监听器就可以监听到用例的结束事件。

通过监听测试用例的启动事件和结束事件,锁定用例日志的记录开始点和结束点,可以将单个测试用例的日志记录精准到该测试用例执行的生命周期,使得用例日志的记录更加精准,避免出现无关该测试用例日志的记录对多线程模式下测试用例的结果分析和失败用例的带来干扰。

另外,在通过多线程并发执行上述用例集中的测试用例的过程中,为不同测试用例创建的缓存空间是相互隔离的,也就是说,每个测试用例的日志均缓存到各自独立的缓存空间中,使得不同测试用例的日志记录互不干扰。

下面以通过多线程并发执行用例集中的测试用例的过程中,单个线程执行测试用例的过程为例对日志输出过程进行描述:在监听到测试用例的启动事件时,初始化该测试用例的日志上下文,即创建该测试用例的缓存空间,例如可以通过threadlocal为该线程中执行的测试用例单独创建一个线程级缓存空间;然后,在该测试用例执行过程中,通过对系统的日志记录器logger插桩埋点,将测试用例执行过程中的日志,记录到该测试用例的缓存空间中;接着,在监听到该测试用例的结束事件时,结束用例日志上下文即结束日志缓存,然后结束该测试用例,进而,就可以输出缓存空间中缓存的该测试用例的日志。在此过程中,该测试用例的缓存空间里面缓存的均为该测试用例执行过程中记录的日志,实现了单用例的日志缓存。

可以理解的是,通过多线程并发执行的每个测试用例均会按照上述过程执行,这样就可以分别输出每个测试用例各自的缓存空间中缓存的日志,不同测试用例的日志记录相互独立。

本说明书一可选的实施例中,上述步骤s104中,输出用例集中每个测试用例的缓存空间中缓存的日志的实施过程可以包括:每结束一个测试用例的日志缓存,则将该测试用例的缓存空间中缓存的日志输出到本地指定位置,以便于测试人员可以在该指定位置找到每个测试用例的日志,进行用例结果分析以及失败用例排查等。或者,也可以每结束一个测试用例的日志缓存,则将该测试用例的缓存空间中缓存的日志上传到日志服务器。日志服务器用于存储测试用例的执行日志,以便于在后续需要分析这些测试用例的执行日志时取用。进一步,在输出该测试用例的日志后,就可以释放该测试用例的缓存空间。或者,也可以在执行完上述用例集中所有测试用例,且分别输出用例集中每个测试用例的日志后,再释放每个测试用例的缓存空间。

上述用例集中所有测试用例均执行结束后,就可以得到每个测试用例各自的相互独立的日志。如图2所示,在本说明书一种可选的实施例中,为了进一步降低多线程模式下测试用例的结果分析成本以及失败用例的排查成本,上述步骤s104中,输出用例集中每个测试用例的缓存空间中缓存的日志的实施过程可以包括:

步骤s200,在上述用例集中所有测试用例均执行结束后,以单个测试用例的日志为单位,按照预设顺序对所有测试用例的日志进行排序;

步骤s202,输出经过排序后的所有测试用例的日志。

举例来讲,在具体实施过程中,若通过map来实现的日志缓存机制,可以在所有测试用例均执行结束后,针对各自缓存map中的内容,以单个测试用例的日志为单位,按照预设顺序进行排序,然后进行输出。

这样就可以使得用例集中各测试用例日志根据需要的顺序有序输出,达到串行模式下的日志效果,有利于提升多线程模式下测试用例的结果分析效率以及失败用例的排查效率。

具体来讲,可以将经过排序后的所有日志存储到本地的指定位置,以便测试人员可以在该指定位置找到这些依次排列的日志例如,可以以文件列表的形式展示,从而依次对多线程并发执行的每个测试用例的日志进行排查。或者,也可以上传到日志服务器进行存储,以便于在后续需要对上述用例集的测试用例的执行日志进行分析时取用。

在步骤s200中,预设顺序可以根据实际应用场景的需要设置。在一种实施方式中,上述按照预设顺序对所有测试用例的日志进行排序可以包括:获取用例集中所有测试用例的执行顺序,按照该执行顺序对所有测试用例的日志进行排序。具体来讲,可以通过记录并比较监听到每个测试用例的启动事件的时间点,按照监听到启动事件的时间点的先后顺序,确定用例集中所有测试用例的执行顺序。这样就可以方便测试人员按照用例集中测试用例开始执行的先后顺序对每个测试用例的日志进行分析。

在另一种实施方式中,上述按照预设顺序对所有测试用例的日志进行排序可以包括:获取用例集中所有测试用例的结束顺序,按照该结束顺序对所有测试用例的日志进行排序。具体来讲,可以通过记录并比较监听到每个测试用例的结束事件的时间点,按照监听到结束事件的时间点的先后顺序,确定用例集中所有测试用例的结束顺序。这样就可以方便测试人员按照用例集中测试用例执行完成的先后顺序对每个测试用例的日志进行分析。

当然,在本说明书其他实施例中,也可以根据测试人员的分析需要配置其他的排列顺序,然后根据该排列顺序对所有测试用例的日志进行排序,本说明书对此不作限制。

举例来讲,假设用例集中包括10个测试用例,分别表示为:case1、case2、……、case10。通过上述步骤s100至步骤s102则可以分别得到每个测试用例的日志,且不同测试用例的日志互不干扰。若按照测试用例的执行顺序排序,假设监听到这10个测试用例的启动事件的时间点由早到晚依次是:case2,case4,case1,case3,case5,case6,case7,case8,case9,case10,且依次用日志1至日志10表示这10个测试用例的日志,则经过排序后这10个日志的排列顺序依次为:日志2,日志4,日志1,日志3,日志5,日志6,日志7,日志8,日志9,日志10,从而按照这个顺序输出这10个日志。

为了便于理解本说明书实施例提供的技术方案的实施过程,下面以一种具体应用场景中,本说明书一示例性实施例提供的日志输出方法的执行过程进行说明。

图3示出了基于一种示例性自动化测试框架的方案时序图。为了便于展示,图3中仅示出了单个子线程的测试用例执行过程,其他子线程中的测试用例执行过程与之类似。如图3所示,用户可以通过向自动化测试框架中的用例启动器(testng/junit)输入测试指令,启动用例测试过程(1),执行主线程程序,由主线程启动多个子线程并发执行预先配置的用例集中的测试用例(2)。针对每个子线程,通过预设的before入口插桩,监听所执行的测试用例的启动事件,并通过预设的after出口插桩,监听所执行的测试用例的结束事件。若监听到所执行的测试用例的启动事件,则通知日志记录器初始化用例日志上下文(2.1),然后,执行测试用例,并在执行测试用例的过程中,记录日志(2.2),并通过日志记录器缓存日志(2.2.1)。若监听到所执行的测试用例的结束事件,则通知日志记录器结束用例日志上下文,然后结束用例执行,缓存单用例日志(4),从而通过日志记录器输出日志或上传日志(4.1)。在用例集中所有测试用例均执行完后,以单个测试用例的日志为单位,按照预设顺序对所有测试用例的日志进行排序后,输出排序后的整体日志(5),完成多线程模式下的用例日志输出。通过框架级别的动态插桩/缓存技术,可以减少对业务系统的侵入,在减少接入成本的同时也提高了本说明书实施例提供的日志输出方法的通用性。

本说明书实施例提供的日志输出方法,能够对于在多线程模式下并发执行的不同测试用例,输出的日志相互独立,互不干扰,避免出现不同测试用例的日志混杂在一起的情况,无需耗费大量人力资源进行日志辨识,极大地方便了测试人员对多线程模式下执行的测试用例的结果分析以及失败用例排查,在提高自动化测试运行效率的同时,有效地降低了对多线程模式下测试用例的结果分析成本以及失败用例的排查成本。

另外,通过监听用例的启动事件和结束事件,将日志记录精准到测试用例执行的生命周期,能够避免日志中出现无关该测试用例日志的记录对多线程模式下执行的测试用例的结果分析和失败用例排查带来干扰。

进一步地,通过对各测试用例的相互独立的日志进行排序,实现了多线程模式下并发执行的测试用例日志的有序输出,达到串行模式下的日志效果,有利于提升多线程模式下测试用例的结果分析效率以及失败用例的排查定位效率。例如,针对一万以上量级的测试用例,使用多线程执行并发执行,可以将运行耗时缩短至min级别,同时可以按用例级别,顺序采集日志,进行定位。

第二方面,基于与前述第一方面实施例提供的日志输出方法同样的发明构思,本说明书实施例还提供了一种日志输出装置。如图4所示,该日志输出装置40包括:

用例执行模块41,用于通过多个线程,并发执行预先配置的用例集中的测试用例,其中,所述用例集包括多个测试用例,每个线程执行一个测试用例;

日志缓存模块42,用于针对所述每个线程,监听所执行的测试用例的启动事件以及结束事件,若监听到所执行的测试用例的启动事件,则创建该测试用例的缓存空间,并将该测试用例执行过程中记录的日志缓存到所述缓存空间,若监听到该测试用例的结束事件,则结束该测试用例的日志缓存,其中,不同测试用例的缓存空间是相互隔离的;

日志输出模块43,用于输出所述用例集中每个测试用例的缓存空间中缓存的日志。

在本说明书一可选的实施例中,上述日志输出模块43包括:

排序子模块431,用于在所述用例集中所有测试用例均执行结束后,以单个测试用例的日志为单位,按照预设顺序对所述所有测试用例的日志进行排序;

输出子模块432,用于输出经过排序后的所有测试用例的日志。

在本说明书一可选的实施例中,上述排序子模块431用于:获取所述用例集中所有测试用例的执行顺序,按照所述执行顺序对所述所有测试用例的日志进行排序;或获取所述用例集中所有测试用例的结束顺序,按照所述结束顺序对所述所有测试用例的日志进行排序。

在本说明书一可选的实施例中,上述日志输出模块43用于:每结束一个测试用例的日志缓存,则将该测试用例的缓存空间中缓存的日志输出到本地指定位置或上传到日志服务器。

在本说明书一可选的实施例中,上述日志输出装置40还包括:缓存释放模块,用于释放所述每个测试用例的缓存空间。

在本说明书一可选的实施例中,上述日志输出装置40还包括:注册模块,用于:在所述用例集中每个测试用例的入口处,注册第一监听机制,所述第一监听机制用于监听测试用例的启动事件;在所述用例集中每个测试用例的出口处,注册第二监听机制,所述第二监听机制用于监听测试用例的结束事件。

在本说明书一可选的实施例中,上述日志输出装置40还包括:检测模块,用于:检测用户是否输入测试指令;若检测到所述用户输入的测试指令,则执行所述通过多个线程,并发执行预先配置的用例集中的测试用例的步骤。

需要说明的是,本说明书实施例所提供的日志输出装置40,其中各个模块执行操作的具体方式已经在上述第一方面提供的方法实施例中进行了详细描述,具体实施过程可以参照上述第一方面提供的方法实施例,此处将不做详细阐述说明。

第三方面,基于与前述实施例提供的日志输出方法同样的发明构思,本说明书实施例还提供了一种电子设备,如图5所示,包括存储器504、一个或多个处理器502及存储在存储器504上并可在处理器502上运行的计算机程序,处理器502执行该程序时实现前文第一方面提供的日志输出方法的任一实施方式的步骤。

其中,在图5中,总线架构(用总线500来代表),总线500可以包括任意数量的互联的总线和桥,总线500将包括由处理器502代表的一个或多个处理器和存储器504代表的存储器的各种电路链接在一起。总线500还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口505在总线500和接收器501和发送器503之间提供接口。接收器501和发送器503可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器502负责管理总线500和通常的处理,而存储器504可以被用于存储处理器502在执行操作时所使用的数据。

可以理解的是,图5所示的结构仅为示意,本说明书实施例提供的电子设备还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。图5中所示的各组件可以采用硬件、软件或其组合实现。

第四方面,基于与前述实施例中提供的日志输出方法同样的发明构思,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文第一方面提供的日志输出方法的任一实施方式的步骤。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。

显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。


技术特征:

1.一种日志输出方法,包括:

通过多个线程,并发执行预先配置的用例集中的测试用例,其中,所述用例集包括多个测试用例,每个线程执行一个测试用例;

针对所述每个线程,监听所执行的测试用例的启动事件以及结束事件,若监听到所执行的测试用例的启动事件,则创建该测试用例的缓存空间,并将该测试用例执行过程中记录的日志缓存到所述缓存空间,若监听到该测试用例的结束事件,则结束该测试用例的日志缓存,其中,不同测试用例的缓存空间是相互隔离的;

输出所述用例集中每个测试用例的缓存空间中缓存的日志。

2.根据权利要求1所述的方法,所述输出所述用例集中每个测试用例的缓存空间中缓存的日志,包括:

在所述用例集中所有测试用例均执行结束后,以单个测试用例的日志为单位,按照预设顺序对所述所有测试用例的日志进行排序;

输出经过排序后的所有测试用例的日志。

3.根据权利要求2所述的方法,所述按照预设顺序对所述所有测试用例的日志进行排序,包括:

获取所述用例集中所有测试用例的执行顺序,按照所述执行顺序对所述所有测试用例的日志进行排序;或

获取所述用例集中所有测试用例的结束顺序,按照所述结束顺序对所述所有测试用例的日志进行排序。

4.根据权利要求1所述的方法,所述输出所述用例集中每个测试用例的缓存空间中缓存的日志,包括:

每结束一个测试用例的日志缓存,则将该测试用例的缓存空间中缓存的日志输出到本地指定位置或上传到日志服务器。

5.根据权利要求1所述的方法,所述输出所述用例集中每个测试用例的缓存空间中缓存的日志之后,还包括:

释放所述每个测试用例的缓存空间。

6.根据权利要求1所述的方法,所述通过多个线程,并发执行预先配置的用例集中的测试用例之前,还包括:

在所述用例集中每个测试用例的入口处,注册第一监听机制,所述第一监听机制用于监听测试用例的启动事件;

在所述用例集中每个测试用例的出口处,注册第二监听机制,所述第二监听机制用于监听测试用例的结束事件。

7.根据权利要求1所述的方法,所述通过多个线程,并发执行预先配置的用例集中的测试用例之前,还包括:

检测用户是否输入测试指令;

若检测到所述用户输入的测试指令,则执行所述通过多个线程,并发执行预先配置的用例集中的测试用例的步骤。

8.一种日志输出装置,包括:

用例执行模块,用于通过多个线程,并发执行预先配置的用例集中的测试用例,其中,所述用例集包括多个测试用例,每个线程执行一个测试用例;

日志缓存模块,用于针对所述每个线程,监听所执行的测试用例的启动事件以及结束事件,若监听到所执行的测试用例的启动事件,则创建该测试用例的缓存空间,并将该测试用例执行过程中记录的日志缓存到所述缓存空间,若监听到该测试用例的结束事件,则结束该测试用例的日志缓存,其中,不同测试用例的缓存空间是相互隔离的;

日志输出模块,用于输出所述用例集中每个测试用例的缓存空间中缓存的日志。

9.根据权利要求8所述的装置,所述日志输出模块包括:

排序子模块,用于在所述用例集中所有测试用例均执行结束后,以单个测试用例的日志为单位,按照预设顺序对所述所有测试用例的日志进行排序;

输出子模块,用于输出经过排序后的所有测试用例的日志。

10.根据权利要求9所述的装置,所述排序子模块用于:

获取所述用例集中所有测试用例的执行顺序,按照所述执行顺序对所述所有测试用例的日志进行排序;或

获取所述用例集中所有测试用例的结束顺序,按照所述结束顺序对所述所有测试用例的日志进行排序。

11.根据权利要求8所述的装置,所述日志输出模块用于:

每结束一个测试用例的日志缓存,则将该测试用例的缓存空间中缓存的日志输出到本地指定位置或上传到日志服务器。

12.根据权利要求8所述的装置,还包括:

缓存释放模块,用于释放所述每个测试用例的缓存空间。

13.根据权利要求8所述的装置,还包括:注册模块,用于:

在所述用例集中每个测试用例的入口处,注册第一监听机制,所述第一监听机制用于监听测试用例的启动事件;

在所述用例集中每个测试用例的出口处,注册第二监听机制,所述第二监听机制用于监听测试用例的结束事件。

14.根据权利要求8所述的装置,还包括:检测模块,用于:

检测用户是否输入测试指令;

若检测到所述用户输入的测试指令,则执行所述通过多个线程,并发执行预先配置的用例集中的测试用例的步骤。

15.一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1-7中任一项所述方法的步骤。

16.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1-7中任一项所述方法的步骤。

技术总结
本说明书实施例提供了一种日志输出方法、装置、电子设备及介质,通过多个线程,并发执行预先配置的用例集中的测试用例,然后针对每个线程,监听所执行的测试用例的启动事件以及结束事件,若监听到测试用例的启动事件,为该测试用例创建独立的缓存空间,从而将测试用例在执行过程中的日志记录到该缓存空间中,若监听到该测试用例的结束事件,则结束该测试用例的日志缓存,进而,输出用例集中每个测试用例的缓存空间中缓存的日志。

技术研发人员:董燕云
受保护的技术使用者:支付宝实验室(新加坡)有限公司
技术研发日:2020.01.06
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-58901.html

最新回复(0)