CN111625442B - 一种mock测试的方法和装置 - Google Patents
一种mock测试的方法和装置 Download PDFInfo
- Publication number
- CN111625442B CN111625442B CN201910151958.3A CN201910151958A CN111625442B CN 111625442 B CN111625442 B CN 111625442B CN 201910151958 A CN201910151958 A CN 201910151958A CN 111625442 B CN111625442 B CN 111625442B
- Authority
- CN
- China
- Prior art keywords
- mock
- request
- sub
- service
- python
- 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.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 57
- 238000000034 method Methods 0.000 claims abstract description 25
- 238000004806 packaging method and process Methods 0.000 claims description 10
- 239000000284 extract Substances 0.000 claims description 6
- 238000013515 script Methods 0.000 abstract description 8
- 230000006870 function Effects 0.000 description 29
- 238000004590 computer program Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000005538 encapsulation Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
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/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种mock测试的方法和装置,所述方法包括:创建请求对象库和创建mock对象库,将请求对象组成的集合定义为请求对象类,将所述请求对象类组成的集合定义为所述请求对象库,将mock对象组成的集合定义为mock对象类,将所述mock对象类组成的集合定义为所述mock对象库;所述mock对象类继承mock基础类的mock特征;根据所述请求对象库和所述mock对象库完成业务的测试。本申请实现了mock对象的全流程自动化测试,无需人工介入;提供了按请求消息分类封装的mock服务,脚本编写人员不关注底层消息内容,降低了自动化脚本的编写与维护的难度。
Description
技术领域
本发明涉及软件测试领域,特别是涉及一种mock测试的方法和装置。
背景技术
随着软件技术的发展,软件***之间的通信更加频繁,越来越多业务场景的测试依赖外部***或接口,当外部***或者接口无法在测试阶段提供时,需通过mock服务方式来模拟以便完成测试。而当前的主要mock服务工具无法满足频繁调用和快速部署mock服务,以及脚本全自动执行的需要,主要有以下几方面技术问题:
1、未实现mock服务和测试脚本的集成,对测试脚本和mock工具配置文件的联调,难度大,效率低;
2、需在脚本运行前手动启动mock服务,结束后手动关闭,无法支持持续集成;
3、未按业务实现mock服务配置分离,多业务共用mock配置,导致配置的输入与输出对应关系易产生冲突,影响测试结果准确性。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种mock测试的方法和装置,以解决上述背景技术中提出的问题。
第一方面,本发明申请提供了一种mock测试的方法,其特征在于,包括:
创建请求对象库和创建mock对象库,将请求对象组成的集合定义为请求对象类,将所述请求对象类组成的集合定义为所述请求对象库,
将mock对象组成的集合定义为mock对象类,将所述mock对象类组成的集合定义为所述mock对象库;
所述mock对象类继承mock基础类的mock特征;
根据所述请求对象库和所述mock对象库完成业务的测试。
进一步地,所述请求对象为将请求消息封装而形成的所述请求对象,所述mock对象为将子业务封装而形成的所述mock对象。
进一步地,一个所述请求消息与一个所述子业务一一对应,以及一个所述mock对象与一个所述子业务一一对应。
进一步地,一个所述请求对象与一个所述mock对象一一对应。
进一步地,所述mock特征包括mock启动、mock配置和mock停止。
进一步地,所述mock对象类具备所述mock启动、所述mock配置和所述mock停止的特征。
进一步地,利用python多线程进行所述业务测试,所述业务测试包括以下步骤:
1)开启python子线程;
2)利用Flask的路由管理功能接收外部的所述请求对象,Flask的路由管理功能将接收的所述请求对象转给所述python子线程;
3)所述python子线程监听并提取所述请求对象的内容;
4)根据所述请求对象调用相应的所述mock对象;
5)***主动对所述python子线程抛出异常,停止所述python子线程。
进一步地,根据所述请求对象调用相应地所述mock对象包括以下步骤:
根据所述请求对象,在所述请求对象库中匹配对应所述请求对象类,在所述请求对象类中匹配对应所述请求对象;
一个所述请求对象与一个所述mock对象一一对应;
根据所述mock对象,在所述mock对象库中匹配对应所述mock对象类,在所述mock对象类中匹配对应所述mock对象。
第二方面,本发明申请提供了一种mock测试的装置,其特征在于,所述装置包括:
创建模块,创建请求对象库和创建mock对象库,将请求对象组成的集合定义为请求对象类,将所述请求对象类组成的集合定义为所述请求对象库,
将mock对象组成的集合定义为mock对象类,将所述mock对象类组成的集合定义为所述mock对象库;
继承模块,所述mock对象类继承mock基础类的mock特征;
测试模块,根据所述请求对象库和所述mock对象库完成业务的测试。
进一步地,在所述创建模块中,所述请求对象为将请求消息封装而形成的请求对象,所述mock对象为将子业务封装而形成的mock对象;
一个所述请求消息与一个所述子业务一一对应,以及一个所述mock对象与一个所述子业务一一对应;
一个所述请求对象与一个所述mock对象一一对应。
本发明提供的技术方案至少具有如下有益技术效果之一:所述mock对象类继承mock基础类的mock特征,实现了涉及mock对象的全流程自动化测试,无需人工介入;创建请求对象库和创建mock对象库,根据所述请求对象库和所述mock对象库完成业务的测试,提供了按请求消息分类封装的mock服务,脚本编写人员不关注底层消息内容,降低了自动化脚本的编写与维护的难度。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显。
图1是本发明实施例的用于mock测试的方法的一种流程图;
图2是本发明实施例的创建请求对象库流程图;
图3是本发明实施例的创建mock对象库流程图;
图4是本发明实施例的mock对象类继承图;
图5是本发明实施例的业务B测试的流程图;
图6是本发明实施例的请求消息b1匹配mock对象B1的流程图;
图7是本发明实施例的用于mock测试的装置的一种流程图;
图8是本发明实施例的一种计算机流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述地实施例是本发明一部分实施例,而不是全部地实施例。基于本发明中地实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
本实施例提供了一种mock测试的方法,需要说明的是,该方法的执行可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在该方法的流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
参见图1,本实施例提供一种mock测试的方法,该方法包括如下步骤:
步骤S101,创建请求对象库和创建mock对象库。
待测试的业务通常分不同类型,任意一种类型的待测试的业务能够衍生出至少一个子业务,其中每一个子业务与一个预设的请求消息一一对应。对于任意一个子业务,将该子业务所对应的请求消息封装成一个请求对象,使得每一个子业务与一个请求对象一一对应。
对于任意一种类型的待测试的业务,该业务衍生出的所有子业务所对应的请求对象都属于同一种类型,该业务衍生出的所有子业务所对应的请求对象组成的集合定义为该业务对应的请求对象类,所有类型的待测试的业务所对应的请求对象类组成的集合定义为请求对象库。
例如,如图2所示,待测试的业务包含业务A、业务B、和业务C三种业务类型。其中,业务A衍生出子业务A1、子业务A2、子业务A3;业务B衍生出子业务B1;业务C衍生出子业务C1、子业务C2。根据每一个子业务与一个预设的请求消息一一对应,子业务A1与预设的请求消息a1一一对应,子业务A2与预设的请求消息a2一一对应,子业务A3与预设的请求消息a3一一对应,子业务B1与预设的请求消息b1一一对应,子业务C1与预设的请求消息c1一一对应,子业务C2与预设的请求消息c2一一对应。
将子业务所对应的请求消息封装成一个请求对象,使得每一个子业务与一个请求对象一一对应。将请求消息a1封装成请求对象a1、请求消息a2封装成请求对象a2、请求消息a3封装成请求对象a3、请求消息b1封装成请求对象b1、请求消息c1封装成请求对象c1和请求消息c2封装成请求对象c2。
因请求对象a1、请求对象a2和请求对象a3与业务A的三个子业务对应,故定义请求对象a1、请求对象a2和请求对象a3为a类型请求对象,请求对象a1、请求对象a2和请求对象a3组成的集合定义为请求对象类a;
因请求对象b1与业务B的一个子业务对应,故定义请求对象b1为b类型请求对象,请求对象b1组成的集合定义为请求对象类b;
因请求对象c1和请求对象c2与业务C的两个子业务对应,故定义请求对象c1和请求对象c2为c类型请求对象,请求对象c1和请求对象c2组成的集合定义为请求对象类c。请求对象类a、请求对象类b和请求对象类c组成的集合定义为请求对象库。
对于任意一种类型的待测试的业务,封装该业务衍生出的每一个子业务为一个mock对象,使得子业务与mock对象一一对应。对于任意一种类型的待测试的业务,该业务衍生出的所有子业务所对应的mock对象都属于同一种类型,该业务衍生出的所有子业务所对应的mock对象组成的集合定义为mock对象类。所有待测试的业务所对应的mock对象类组成的集合定义为mock对象库。
例如,如图3所示,对于待测试的业务A,在Flask的路由管理功能基础上,封装子业务A1为mock对象A1,封装子业务A2为mock对象A2,封装子业务A3为mock对象A3。因mock对象A1、mock对象A2和mock对象A3与业务A的子业务对应,故定义mock对象A1、mock对象A2和mock对象A3为A类型mock对象,mock对象A1、mock对象A2和mock对象A3组成的集合定义为业务A对应的mock对象类A。
对于待测试的业务B,封装子业务B1为mock对象B1。因mock对象B1与业务B的子业务对应,故定义mock对象B1为B类型mock对象,mock对象B1组成的集合定义为业务B对应的mock对象类B。
对于待测试的业务C,封装子业务C1为mock对象C1,封装子业务C2为mock对象C2。因mock对象C1和mock对象C2与业务C的子业务对应,故定义mock对象C1和mock对象C2为A类型mock对象,mock对象C1和mock对象C2组成的集合定义为业务B对应的mock对象类C,
mock对象类A、mock对象类B和mock对象类C组成的集合定义为mock对象库。
根据每一个子业务与一个预设的请求消息一一对应,以及每一个子业务为一个mock对象,使得子业务与mock对象一一对应,可以推断一个请求消息(请求对象)与一个mock对象一一对应,该请求消息对应的子业务与该mock对象对应的子业务为同一个子业务。
步骤S102,mock对象类继承mock基础类的mock特征。
mock基础类具备mock特征,所述mock特征包括mock启动、mock配置和mock停止。mock对象类继承mock基础类的mock特征,使得每一个mock对象类具备mock特征,即每一个mock对象类具备mock启动、mock配置和mock停止的特征。
对业务测试开始前,开启mock启动;业务测试结束后,开启mock停止。mock配置为增加或减少任意一种类型业务的子业务数量。
参见图4,例如,mock对象类A、mock对象类B、mock对象类C均继承mock基础类的mock特征,使得mock对象类A具备mock特征,即mock对象类A具备mock启动、mock配置和mock停止的特征;mock对象类B具备mock特征,即mock对象类B具备mock启动、mock配置和mock停止的特征;mock对象类C具备mock特征,即mock对象类C具备mock启动、mock配置和mock停止的特征。
对业务B进行mock配置,增加子业务B2为业务B的子业务,请求消息b2与子业务B2一一对应,封装子业务B2为mock对象B1。请求对象类b包括请求消息b1和请求消息b2,mock对象类B包括mock对象B1和mock对象B2。
步骤S103,根据所述请求对象库和所述mock对象库完成业务的测试,具体包括以下子步骤:
S1031、利用python多线程对业务进行测试,一个业务够衍生出至少一个子业务,一个子业务对应一个请求消息,根据请求消息的数量匹配相应数量的python子线程,一个请求消息对应一个python子线程,两个请求消息对应两个python子线程,多个请求消息对应多个python子线程。
开启每一个python子线程中测试子业务的mock启动,使得多个python子线程同时启动时任意两个python子线程之间不会相互影响,为python子线程接收请求消息作准备。
S1032、利用Flask的路由管理功能接收外部的请求消息,Flask的路由管理功能将接收的请求消息转给python子线程,当Flask的路由管理功能同时接收到多个外部的请求消息,Flask的路由管理功能将多个请求消息分别转给对应数量的python子线程。
S1033、python子线程监听并提取请求消息的内容。
S1034、对于任意一个请求消息,根据请求消息调用相应mock对象,具体包括以下子步骤:
S10341、对于任意一个请求消息,确定该请求消息属于什么类型,在请求对象库中找到对应的请求对象类,在对应的请求对象类中找出所对应的请求对象,也就是在对应的请求对象类中找出与外部请求消息相同的请求消息。
S10342、根据步骤S101中一个请求消息与一个mock对象一一对应,该请求消息对应特定子业务,特定子业务对应一个特定mock对象。
S10343、判断特定mock对象属于什么类型,在mock对象库中找到对应的mock对象类,在对应的mock对象类中找到该特定mock对象。
S1035、开启每一个python子线程中所测试业务的mock停止,使得多个python子线程同时反馈各自mock对象时任意两个python子线程之间不会相互影响,***主动对该python子线程抛出异常,停止该python子线程。
Flask的路由管理功能接收多个python子线程反馈的mock对象,Flask的路由管理功能再将多个mock对象转给***。
S1036、当Flask的路由管理功能接收的mock对象为封装特定子业务的mock对象,则业务测试成功;
当Flask的路由管理功能接收的mock对象不是封装特定子业务的mock对象,则业务测试失败。
参见图5,例如当python多线程对业务B进行测试时,业务B包括子业务B1,python子线程对子业务B1进行测试,具体步骤如下:
1)开启python子线程的mock启动,为python子线程接收请求消息做准备。Flask的路由管理功能接收到一个外部请求消息b1;
2)Flask的路由管理功能将请求消息b1转给python子线程;
3)python子线程监听并提取请求消息b1的内容;
4)根据请求消息b1匹配相应mock对象B1,具体包括以下步骤:
参见图6,根据请求消息b1归属于请求对象类b,在请求对象库中找到请求对象类b,在请求对象类b中找到与外部请求消息b1相同的请求对象b1,也就是在在请求对象类b中找到请求消息b1;
根据每一个子业务与一个请求消息一一对应和每一个子业务与一个mock对象一一对应,请求消息b1对应子业务B1,子业务B1对应mock对象B1,在mock对象库中找到子业务B1所对应的mock对象类B,在mock对象类B中找到封装子业务B1的mock对象B1。
5)Flask的路由管理功能接收python子线程反馈的mock对象B1,python子线程完成mock对象B1转给Flask的路由管理功能后,开启mock停止,***主动对该python子线程抛出异常,停止该python子线程。
Flask的路由管理功能将mock对象B1转给***,子业务B1测试成功。
实施例二:
参见图7,本实施例一种mock测试的装置,该装置包括:
S701创建模块,创建请求对象库和创建mock对象库。
待测试的业务通常分不同类型,任意一种类型的待测试的业务能够衍生出至少一个子业务,其中每一个子业务与一个预设的请求消息一一对应。对于任意一个子业务,将该子业务所对应的请求消息封装成一个请求对象,使得每一个子业务与一个请求对象一一对应。
对于任意一种类型的待测试的业务,该业务衍生出的所有子业务所对应的请求对象都属于同一种类型,该业务衍生出的所有子业务所对应的请求对象组成的集合定义为该业务对应的请求对象类,所有类型的待测试的业务所对应的请求对象类组成的集合定义为请求对象库。
对于任意一种类型的待测试的业务,封装该业务衍生出的每一个子业务为一个mock对象,使得子业务与mock对象一一对应。对于任意一种类型的待测试的业务,该业务衍生出的所有子业务所对应的mock对象都属于同一种类型,该业务衍生出的所有子业务所对应的mock对象组成的集合定义为该业务对应的mock对象类。所有待测试的业务所对应的mock对象类组成的集合定义为mock对象库。
根据每一个子业务与一个预设的请求消息一一对应,以及每一个子业务为一个mock对象,使得子业务与mock对象一一对应,可以推断一个请求消息(请求对象)与一个mock对象一一对应,该请求消息对应的子业务与该mock对象对应的子业务为同一个子业务。
S702继承模块,mock对象类继承mock基础类的mock特征。
mock基础类具备mock特征,所述mock特征包括mock启动、mock配置和mock停止。mock对象类继承mock基础类的mock特征,使得每一个mock对象类具备mock特征,即每一个mock对象类具备mock启动、mock配置和mock停止的特征。
对业务测试开始前,开启mock启动;业务测试结束后,开启mock停止。mock配置为增加或减少任意一种类型业务的子业务数量。
S703测试模块,根据所述请求对象库和所述mock对象库完成业务的测试,具体包括以下子模块:
S7031、利用python多线程对业务进行测试,一个业务够衍生出至少一个子业务,一个子业务对应一个请求消息,根据请求消息的数量匹配相应数量的python子线程,一个请求消息对应一个python子线程,两个请求消息对应两个python子线程,多个请求消息对应多个python子线程。
开启每一个python子线程中测试子业务的mock启动,使得多个python子线程同时启动时任意两个python子线程之间不会相互影响,为python子线程接收请求消息作准备。
S7032、接收模块,利用Flask的路由管理功能接收外部的请求消息,Flask的路由管理功能将接收的请求消息转给python子线程,当Flask的路由管理功能同时接收到多个外部的请求消息,Flask的路由管理功能将多个请求消息分别转给对应数量的python子线程。
S7033、监听提取模块,python子线程监听并提取请求消息的内容。
S7034、匹配模块,对于任意一个请求消息,根据请求消息调用与之相应mock对象,具体包括以下子模块:
S70341、请求对象模块,对于任意一个请求消息,确定该请求消息属于什么类型,在请求对象库中找到对应的请求对象类,在对应的请求对象类中找出所对应的请求对象,也就是在对应的请求对象类中找出与外部请求消息相同的请求消息。
S70342、配对模块,根据步骤S701中一个请求消息与一个mock对象一一对应,该请求消息对应特定子业务,特定子业务对应一个特定mock对象。
S70343、mock对象模块,判断特定mock对象属于什么类型,在mock对象库中找到对应的mock对象类,在对应的mock对象类中找到该特定mock对象。
S7035、转接模块,开启每一个python子线程中所测试业务的mock停止,使得多个python子线程同时反馈各自mock对象时任意两个python子线程之间不会相互影响,***主动对该python子线程抛出异常,停止该python子线程。
Flask的路由管理功能接收多个python子线程反馈的mock对象,Flask的路由管理功能再将多个mock对象转给***。
S7036、停止模块,当Flask的路由管理功能接收的mock对象为封装特定子业务的mock对象,则业务测试成功;
当Flask的路由管理功能接收的mock对象不是封装特定子业务的mock对象,则业务测试失败。
实施例三:
参见图8,计算机***包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM803中,还存储有***操作所需的各种程序和数据。CPU 801、ROM802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明的实施例,上文参考流程图8描述的过程可以被实现为计算机软件程序。例如,本发明的实施例三包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例三的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种mock测试的装置包括创建模块、继承模块和测试模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,创建模块还可以被描述为“用于创建请求对象库和创建mock对象库”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中mock测试的方法。
例如,所述电子设备可以实现如图1中所示的:步骤S101,创建请求对象库和创建mock对象库;步骤S102,mock对象类继承mock基础类的mock特征;步骤S103,根据请求对象库和mock对象库完成业务测试。又如,所述电子设备可以实现如图2、图3、图4、图5和图6中所示的各个步骤。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分相互参见即可,每个实施例重点说明的都是与其他实施例的不同之处。对于模块实施例而言,由于其基于相似于方法的实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (3)
1.一种mock测试的方法,其特征在于,包括:创建请求对象库和创建mock对象库,将请求对象组成的集合定义为请求对象类,将所述请求对象类组成的集合定义为所述请求对象库,将mock对象组成的集合定义为mock对象类,将所述mock对象类组成的集合定义为所述mock对象库;所述mock对象类继承mock基础类的mock特征;根据所述请求对象库和所述mock对象库完成业务的测试;
所述请求对象为将请求消息封装而形成的请求对象,所述mock对象为将子业务封装而形成的mock对象,一个所述请求消息与一个所述子业务一一对应,以及一个所述mock对象与一个所述子业务一一对应,
一个所述请求对象与一个所述mock对象一一对应;
所述mock特征包括mock启动、mock配置和mock停止;
利用python多线程进行所述业务测试,所述业务测试包括以下步骤:1)开启python子线程;2)利用Flask的路由管理功能接收外部的所述请求对象,Flask的路由管理功能将接收的所述请求对象转给所述python子线程;3)所述python子线程监听并提取所述请求对象的内容;4)根据所述请求对象调用相应的所述mock对象;5)***主动对所述python子线程抛出异常,停止所述python子线程。
2.根据权利要求1所述方法,其特征在于:根据所述请求对象调用相应的所述mock对象包括以下步骤:根据所述请求对象,在所述请求对象库中匹配对应所述请求对象类,在所述请求对象类中匹配对应所述请求对象;一个所述请求对象与一个所述mock对象一一对应;根据所述mock对象,在所述mock对象库中匹配对应所述mock对象类,在所述mock对象类中匹配对应所述mock对象。
3.一种mock测试的装置,其特征在于:所述装置包括:创建模块,创建请求对象库和创建mock对象库,将请求对象组成的集合定义为请求对象类,将所述请求对象类组成的集合定义为所述请求对象库,将mock对象组成的集合定义为mock对象类,将所述mock对象类组成的集合定义为所述mock对象库;继承模块,所述mock对象类继承mock基础类的mock特征;测试模块,根据所述请求对象库和所述mock对象库,完成业务的测试;
在所述创建模块中,所述请求对象为将请求消息封装而形成的请求对象,所述mock对象为将子业务封装而形成的mock对象;一个所述请求消息与一个所述子业务一一对应,以及一个所述mock对象与一个所述子业务一一对应;一个所述请求对象与一个所述mock对象一一对应,所述mock特征包括mock启动、mock配置和mock停止,
利用python多线程进行所述业务测试,所述业务测试包括以下步骤:1)开启python子线程;2)利用Flask的路由管理功能接收外部的所述请求对象,Flask的路由管理功能将接收的所述请求对象转给所述python子线程;3)所述python子线程监听并提取所述请求对象的内容;4)根据所述请求对象调用相应的所述mock对象;5)***主动对所述python子线程抛出异常,停止所述python子线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910151958.3A CN111625442B (zh) | 2019-02-28 | 2019-02-28 | 一种mock测试的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910151958.3A CN111625442B (zh) | 2019-02-28 | 2019-02-28 | 一种mock测试的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111625442A CN111625442A (zh) | 2020-09-04 |
CN111625442B true CN111625442B (zh) | 2024-03-26 |
Family
ID=72272467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910151958.3A Active CN111625442B (zh) | 2019-02-28 | 2019-02-28 | 一种mock测试的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111625442B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855177A (zh) * | 2011-06-30 | 2013-01-02 | 阿里巴巴集团控股有限公司 | 一种单元测试的方法和装置 |
CN103984628A (zh) * | 2014-05-15 | 2014-08-13 | 中国南方航空股份有限公司 | 应用于bs架构的自动化功能测试方法及*** |
US9201767B1 (en) * | 2013-12-23 | 2015-12-01 | Nationwide Mutual Insurance Company | System and method for implementing a testing framework |
CN106547681A (zh) * | 2015-09-18 | 2017-03-29 | 北京京东尚科信息技术有限公司 | 数据自动加载并复用模拟服务测试的方法和装置 |
CN106970873A (zh) * | 2017-01-10 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 线上mock测试方法、装置及*** |
CN107368405A (zh) * | 2016-05-11 | 2017-11-21 | 腾讯科技(北京)有限公司 | 测试***、测试方法、mock平台、***和客户端 |
CN109359149A (zh) * | 2018-10-08 | 2019-02-19 | 网宿科技股份有限公司 | 一种模拟测试方法及相关装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8935573B2 (en) * | 2012-08-29 | 2015-01-13 | International Business Machines Corporation | Reliable unit testing through cached mocking |
US9870311B2 (en) * | 2014-09-04 | 2018-01-16 | Home Box Office, Inc. | Mock object generation |
-
2019
- 2019-02-28 CN CN201910151958.3A patent/CN111625442B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855177A (zh) * | 2011-06-30 | 2013-01-02 | 阿里巴巴集团控股有限公司 | 一种单元测试的方法和装置 |
US9201767B1 (en) * | 2013-12-23 | 2015-12-01 | Nationwide Mutual Insurance Company | System and method for implementing a testing framework |
CN103984628A (zh) * | 2014-05-15 | 2014-08-13 | 中国南方航空股份有限公司 | 应用于bs架构的自动化功能测试方法及*** |
CN106547681A (zh) * | 2015-09-18 | 2017-03-29 | 北京京东尚科信息技术有限公司 | 数据自动加载并复用模拟服务测试的方法和装置 |
CN107368405A (zh) * | 2016-05-11 | 2017-11-21 | 腾讯科技(北京)有限公司 | 测试***、测试方法、mock平台、***和客户端 |
CN106970873A (zh) * | 2017-01-10 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 线上mock测试方法、装置及*** |
CN109359149A (zh) * | 2018-10-08 | 2019-02-19 | 网宿科技股份有限公司 | 一种模拟测试方法及相关装置 |
Non-Patent Citations (1)
Title |
---|
陈丽萍 ; 张勇 ; 丁智敏 ; .自动化单元测试框架EasyMock分析及其应用.巢湖学院学报.2014,(06),第40-44页. * |
Also Published As
Publication number | Publication date |
---|---|
CN111625442A (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111818136B (zh) | 数据处理方法、装置、电子设备及计算机可读介质 | |
CN114064208A (zh) | 检测应用服务状态的方法、装置、电子设备及存储介质 | |
CN108733554A (zh) | Mock方法和装置 | |
CN110032400A (zh) | 一种加载插件的方法及电子终端 | |
CN112035344A (zh) | 多场景测试方法、装置、设备和计算机可读存储介质 | |
CN112948272A (zh) | 基于生产环境的数据测试***功能方法、装置及相关设备 | |
CN112579569A (zh) | 一种数据迁移方法和装置 | |
CN113282444A (zh) | 用于业务流程调试的可视化方法和装置 | |
CN110795331A (zh) | 软件测试的方法和装置 | |
CN111625442B (zh) | 一种mock测试的方法和装置 | |
CN113760230A (zh) | 业务处理方法和装置 | |
CN112887355B (zh) | 异常服务器的业务处理方法及装置 | |
CN111414154A (zh) | 前端开发的方法、装置、电子设备和存储介质 | |
JP2023021137A (ja) | ソフトウェア実体間のイベントの決定的再現 | |
CN111538717B (zh) | 数据处理的方法、装置、电子设备及计算机可读介质 | |
CN112948195A (zh) | 接口测试的方法、装置、电子设备和存储介质 | |
CN112613955A (zh) | 订单处理方法、装置、电子设备及存储介质 | |
CN107463438B (zh) | 用于多Openstack环境的信息处理方法、装置和*** | |
CN113704079A (zh) | 基于Protobuf的接口测试方法和装置 | |
CN113448602A (zh) | 版本更新的方法和装置 | |
CN112783903A (zh) | 生成更新日志的方法和装置 | |
CN113034107B (zh) | 一种流程处理方法和装置 | |
CN112131095A (zh) | 压力测试方法和装置 | |
CN109376023B (zh) | 用于生成调用信息、发布返回码组的方法和设备 | |
CN110780937A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |