CN113434419A - 接口测试用例的断言方法以及装置 - Google Patents

接口测试用例的断言方法以及装置 Download PDF

Info

Publication number
CN113434419A
CN113434419A CN202110729380.2A CN202110729380A CN113434419A CN 113434419 A CN113434419 A CN 113434419A CN 202110729380 A CN202110729380 A CN 202110729380A CN 113434419 A CN113434419 A CN 113434419A
Authority
CN
China
Prior art keywords
assertion
value
test case
key
interface test
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
Application number
CN202110729380.2A
Other languages
English (en)
Inventor
刘俊锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qingdao Haier Technology Co Ltd
Haier Smart Home Co Ltd
Original Assignee
Qingdao Haier Technology Co Ltd
Haier Smart Home Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qingdao Haier Technology Co Ltd, Haier Smart Home Co Ltd filed Critical Qingdao Haier Technology Co Ltd
Priority to CN202110729380.2A priority Critical patent/CN113434419A/zh
Publication of CN113434419A publication Critical patent/CN113434419A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test 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)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本申请公开了一种接口测试用例的断言方法以及装置。其中,该方法包括:获取接口测试用例;根据字典结构中的断言对接口测试用例进行断言,其中,字典结构包括:多个断言的键值对以及多个断言的断言方式;基于断言结果确定接口测试用例是否测试通过。本申请解决了由于相关技术中在对接口进行测试时,断言的键值对数量有限造成的代码繁琐、开发成本高以及代码维护效率低下的技术问题。

Description

接口测试用例的断言方法以及装置
技术领域
本申请涉及数据处理领域,具体而言,涉及一种接口测试用例的断言方法以及装置。
背景技术
在大数据、人工智能等领域,需要对接口返回结果进行多个键值对的断言,才能保证接口测试通过。目前在编写接口自动化测试用例过程中,断言是不可或缺的重要一环,一个测试用例一般断言1-3个键值对,若需要5个断言,甚至10个或更多的时候,就显得代码繁琐,且不好维护,现有技术中,断言关键字assert只能一次断言一个键,断言多个键时,就需要写多个相应的代码,开发成本高,维护效率低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种接口测试用例的断言方法以及装置,以至少解决由于相关技术中在对接口进行测试时,断言的键值对数量有限造成的代码繁琐、开发成本高以及代码维护效率低下的技术问题。
根据本申请实施例的一个方面,提供了一种接口测试用例的断言方法,包括:获取接口测试用例;根据字典结构中的断言对接口测试用例进行断言,其中,字典结构包括:多个断言的键值对以及多个断言的断言方式;基于断言结果确定接口测试用例是否测试通过。
可选地,基于断言结果确定接口测试用例是否通过测试,包括:获取执行接口测试用例对应的返回数据;根据返回数据确定接口测试用例对应的多个第一键值对,其中,第一键值对包括:第一键以及该第一键对应的第一值,多个第一键值对对应的第一键不相同;获取字典结构中与多个第一键一一对应的第二键;确定第二键对应的第二键值对,比较第二键值对中的第二值是否与第一值相同;在比较结果指示所有第二值与第一值相同的情况下,则确定接口测试用例测试通过。
可选地,在比较结果指示任意一个第二值与第一值不相同的情况下,则确定接口测试用例测试不通过。
可选地,确定接口测试用例测试不通过之后,方法还包括:确定与第二值不相同的第一值所在的第一键值对为目标键值对;打印目标键值对,以及目标键值对应的正确的第二值。
可选地,方法还包括:获取目标键值对在接口测试用例中的目标层级;展示目标层级;采用预定形式标记层级对应的位置,并展示采用预定形式标记后的位置。
可选地,基于断言结果确定接口测试用例是否测试通过之后,方法还包括:显示接口测试用例中未通过的断言数量以及字典结构中的断言总数量;显示接口测试用例中未通过的断言,并显示未通过的断言对应的预期结果。
可选地,断言方式包括:判断两个参数相等assertEqual、判断两个参数不相等assertNotEqual、判断字符串是否包含assertIn、判断字符串是否不包含assertNotIn。
根据本申请实施例的另一方面,还提供了一种接口测试用例的断言装置,包括:获取模块,用于获取接口测试用例;断言模块,用于根据字典结构中的断言对接口测试用例进行断言,其中,字典结构包括:多个断言的键值对以及多个断言的断言方式;确定模块,用于基于断言结果确定接口测试用例是否测试通过。
根据本申请实施例的另一方面,还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行任意一种接口测试用例的断言方法。
根据本申请实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行任意一种接口测试用例的断言方法。
在本申请实施例中,采用字典结构存储断言的键值对以及断言方式的方式,通过获取接口测试用例,根据字典结构中的断言对接口测试用例进行断言,其中,字典结构包括:多个断言的键值对以及多个断言的断言方式;然后,基于断言结果确定接口测试用例是否测试通过,达到了仅需编写一个断言字典,即可支持多个断言以及支持多种断言方式的目的,从而实现了简化代码程序,降低开发人员的开发成本,且便于后期维护的技术效果,进而解决了由于相关技术中在对接口进行测试时,断言的键值对数量有限造成的代码繁琐、开发成本高以及代码维护效率低下的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是相关技术中测试用例的断言过程示意图;
图2是本申请实施例的一种可选的测试用例的断言过程示意图;
图3是根据本申请实施例的一种可选的接口测试用例的断言方法的流程示意图;
图4是本申请实施例一种可选的判断接口测试用例是否通过测试的方法流程示意图;
图5是根据本申请实施例一种可选的接口测试用例的断言装置的结构示意图;
图6是本申请实施例一种可选的确定模块的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于本领域技术人员更好的理解本申请实施例,现将本申请可能涉及的技术术语或者部分名词解释如下:
字典:字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值key=>value对用冒号:分割,每个键值对之间用逗号,分割,整个字典包括在花括号{}中。
断言:在程序设计中,断言是一种放在程序中的一阶逻辑(如一个结果为真或是假的逻辑判断式),目的是为了标示与验证程序开发者预期的结果,当程序运行到断言的位置时,对应的断言应该为真。若断言不为真,程序会中止运行,并给出错误信息。
键值对Key-Value:Key-Value键值对存储是数据库最简单的组织形式。键:就是存的值的编号;值:就是要存放的数据,在关系模型中,元组是由“键值对”(name-value pair)构成的集合,而关系则是元组的集合。
Jmespath:Jmespath是一种JSON查询语言,可以选择JSON对象中的键,然后获取该键对应的值(可以访问JSON中的元素)。
图1是相关技术中测试用例的断言过程示意图,从图1中可以看出,该测试用例断言了3个键值对,可以理解的,采用该方式对于开发人员需要对每个断言都要编写大量类似的代码,其是比较繁琐的,且在代码运行时也会影响代码的运行效率,以下相关技术中的测试用例的断言代码,从下述代码可以看出其需要对每个接口测试用例返回结果一一断言,比较繁琐;
传统断言:
#返回结果
Response={“msg”:“成功”,
“data”:
{“response”:“今天天气真好”},
“dev”:[
{“icon”:“001”,“dev”:“001”},
{“icon”:“002”,“dev”:“002”},
{“icon”:“003”,“dev”:“003”},
{“icon”:“004”,“dev”:“004”}
]
}
对返回结果断言如下:
assert response[‘msg’]==“成功”
assert response[‘dev’][0][“icon”][“dev”]!===“000”
assert“今天天气”in response[“data”][“response”]
assert“666”not in response[“dev”][0][“icon”]
图2是本申请一种可选的测试用例的断言过程示意图,从图2可以看出,采用该方法可以将多个断言以及相应的断言方式编写在字典结构中,由此不但可以节省开发成本,而且得到的代码冗余度较小,运行的效率也会比较高。
具体地,根据本申请实施例,提供了一种接口测试用例的断言方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图3是根据本申请实施例的接口测试用例的断言方法,如图3所示,该方法包括如下步骤:
步骤S102,获取接口测试用例;
步骤S104,根据字典结构中的断言对接口测试用例进行断言,其中,字典结构包括:多个断言的键值对以及多个断言的断言方式;
步骤S106,基于断言结果确定接口测试用例是否测试通过。
该接口测试用例的断言方法中,可获取接口测试用例,然后根据字典结构中的断言对接口测试用例进行断言,其中,字典结构包括:多个断言的键值对以及多个断言的断言方式,最后,基于断言结果确定接口测试用例是否测试通过,达到了仅需编写一个断言字典,即可支持多个断言以及支持多种断言方式的目的,从而实现了简化代码程序,降低开发人员的开发成本,且便于后期维护的技术效果,进而解决了由于相关技术中在对接口进行测试时,断言的键值对数量有限造成的代码繁琐、开发成本高以及代码维护效率低下的技术问题。
可以理解的,在各种测试中,例如,API测试、Web测试或者APP测试,测试用例是否执行成功,可通过比较实际结果与预期结果是否一致来判断的,当预期结果与实际结果一致,则表示测试用例执行通过,当预期结果与实际结果不一致,则表示测试用例执行失败,而对预期结果与实际结果进行比较的过程,在自动化软件测试中是可通过断言来实现的。
以下文代码为例进行解释说明:
Figure BDA0003138768180000051
Figure BDA0003138768180000061
从上数代码可以看出,assert后面的条件表达式为False,抛出了AssertionError,并显示了错误信息left is[1,2,3],right is[1,2,4],即,左边的第三个元素和右边的第三个元素不一样,因此,该测试用例的测试结果为不通过。
图4是本申请一种可选的判断接口测试用例是否通过的方法流程示意图,从图4可以看出该方法包括如下步骤:
S202,获取执行接口测试用例对应的返回数据;
S204,根据返回数据确定接口测试用例对应的多个第一键值对,其中,第一键值对包括:第一键以及该第一键对应的第一值,多个第一键值对对应的第一键不相同;
S206,获取字典结构中与多个第一键一一对应的第二键;
S208,确定第二键对应的第二键值对,比较第二键值对中的第二值是否与第一值相同;
S210,在比较结果指示所有第二值与第一值相同的情况下,则确定接口测试用例测试通过。
该基于断言结果确定接口测试用例是否通过测试的方法中,可获取执行接口测试用例对应的返回数据;根据返回数据确定接口测试用例对应的多个第一键值对,其中,第一键值对包括:第一键以及该第一键对应的第一值,多个第一键值对对应的第一键不相同;获取字典结构中与多个第一键一一对应的第二键;确定第二键对应的第二键值对,比较第二键值对中的第二值是否与第一值相同;在比较结果指示所有第二值与第一值相同的情况下,则确定接口测试用例测试通过。
举例说明,接口测试用例测试返回结果数据对应的第一键值对为“A=100”,即,第一键为A,第一键值为100,字典结构存储的第二键值对为“A=200”,即,第二键为A,第二键值为200,即断言方式为Aequal200,因此,第二键值对中的第二值200与第一键值100不同,则认为该接口测试用例测试不通过,而假设字典结构存储的第二键值对为A_00,即,第二键为A,第二键值为100,即断言方式为Aequal00,因此,第二键值对中的第二值100与第一键值100相同,则认为该接口测试用例测试不通过。
需要说明的是,本申请中相关实施例中的获取字典结构中与多个第一键一一对应的第二键,比较第二键值对中的第二值是否与第一值相同,这一过程包括:确定断言的方式,即,基于断言方式确定预期结果,然后,将该预期结果同实际中返回的结果数据进行比较。
举例而言:
返回结果数据为:
#四个测试用例分别对应的返回结果数据,四个测试用例分别与A、B、C、D一一对应
{“A=001”#“A=001”表示键值对,A表示键,001表示值;
“B=002”#“B=002”表示键值对,B表示键,001表示值;
“C=003”#“C=003”表示键值对,C表示键,003表示值;
“D=004”#“D=004”表示键值对,D表示键,004表示值;
}
#字典结构中的断言(断言字典)
{“A=001”#,A表示键,001表示值,“=”表示断言的方式equal,;
“B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal;
“C=003”#C表示键,003表示值,“=”表示断言的方式equal
“D=004”#D表示键,004表示值,“=”表示断言的方式equal
}
分析可知,返回结果中“A=001”,字典结构中断言为A=001,因此,该断言对应的接口测试用例测试通过,同理,字典结构“C=003”#C表示键,003表示值,“=”表示断言的方式equal,“D=004”#D表示键,004表示值,“=”表示断言的方式equal,因此,返回结果数据中“C=003”、“D=004”各自对应的接口测试用例也通过。而返回结果中,“B=002”,由于字典结果设置的断言方式为““B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal”,因此,该返回结果数据“B=002”对应的接口测试用例不通过。
容易注意到的是,在比较结果指示任意一个第二值与第一值不相同的情况下,则确定接口测试用例测试不通过。
举例而言:
#某一个测试用例同时返回的结果数据有4个,分别为A、B、C、D
{“A=001”#“A=001”表示键值对,A表示键,001表示值;
“B=002”#“B=002”表示键值对,B表示键,001表示值;
“C=003”#“C=003”表示键值对,C表示键,003表示值;
“D=004”#“D=004”表示键值对,D表示键,004表示值;
}
#字典结构中的断言(断言字典)
{“A=001”#,A表示键,001表示值,“=”表示断言的方式equal;
“B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal;
“C=003”#C表示键,003表示值,“=”表示断言的方式equal
“D=004”#D表示键,004表示值,“=”表示断言的方式equal
}
分析可知,返回结果中“A=001”,而字典结构中““A=001”#,A表示键,001表示值,“=”表示断言的方式equal”,同理,字典结构“C=003”#C表示键,003表示值,“=”表示断言的方式equal,“D=004”#D表示键,004表示值,“=”表示断言的方式equal,因此,返回结果数据中“A=001”、C=003”、“D=004”各自对应的断言无误,即实际值(返回结果)与期望值(字典结构中的断言方式以及参数值)是相同的。而返回结果中,“B=002”,由于字典结果设置的断言方式为““B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal(即B不能等于002)”,因此,该返回结果数据“B=002”对应的断言存在错误,因此,就会导致该测试用例测试不通过。
本申请一些可选的实施例中,确定接口测试用例测试不通过之后,可确定与第二值不相同的第一值所在的第一键值对为目标键值对;打印目标键值对,以及目标键值对应的正确的第二值。
举例而言,#某一个测试用例同时返回的结果数据有4个,分别为A、B、C、D
{“A=001”#“A=001”表示键值对,A表示键,001表示值;
“B=002”#“B=002”表示键值对,B表示键,001表示值;
“C=003”#“C=003”表示键值对,C表示键,003表示值;
“D=004”#“D=004”表示键值对,D表示键,004表示值;
}
#字典结构中的断言(断言字典)
{“A=001”#,A表示键,001表示值,“=”表示断言的方式equal;
“B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal;
“C=003”#C表示键,003表示值,“=”表示断言的方式equal
“D=004”#D表示键,004表示值,“=”表示断言的方式equal
}
#打印断言结果
print(assert_result)
assert_result=({
‘返回结果数据“B=002”:有误’;正确结果应为“B!=002”}
)
通过上述分析可知,返回结果中,“B=002”,由于字典结果设置的断言方式为““B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal(即B不能等于002)”,因此,该返回结果数据“B=002”对应的断言存在错误,因此,可将返回结果数据“B=002”作为目标键值对,然后在打印结果将“B=002”作为目标键值对,并输出“返回结果数据“B=002”:有误’;正确结果应为“B!=002””,即,显示接口测试用例中未通过的断言,并显示未通过的断言对应的预期结果(正确结果)。
可以理解的,在基于断言结果确定接口测试用例是否测试通过之后,显示测试用例中未通过的断言数量以及字典结构中的断言总数量,并显示接口测试用例中未通过的断言,并显示该未通过的断言对应的预期结果,可以有利于开发人员快速查找错误原因,提高开发人员的开发效率。
本申请一些实施例中,可获取目标键值对在接口测试用例中的目标层级;展示目标层级;采用预定形式标记层级对应的位置,并展示采用预定形式标记后的位置。
举例而言,#某一个测试用例同时返回的结果数据有4个,分别为A、B、C、D
{“A=001”#“A=001”表示键值对,A表示键,001表示值;
“B=002”#“B=002”表示键值对,B表示键,001表示值;
“C=003”#“C=003”表示键值对,C表示键,003表示值;
“D=004”#“D=004”表示键值对,D表示键,004表示值;
}
#字典结构中的断言(断言字典)
{“A=001”#,A表示键,001表示值,“=”表示断言的方式equal;
“B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal;
“C=003”#C表示键,003表示值,“=”表示断言的方式equal
“D=004”#D表示键,004表示值,“=”表示断言的方式equal
}
#打印断言结果
print(assert_result)
assert_result=({
‘返回结果数据“B=002”:有误’;正确结果应为“B!=002”}
)
基于上述分析可知,该返回结果数据“B=002”对应的断言存在错误,因此,可将返回结果数据“B=002”作为目标键值对,然后在打印结果将“B=002”作为目标键值对,并输出“返回结果数据“B=002”:有误’;正确结果应为“B!=002””,为了便于测试人员或者开发人员快速确认出现错误的地方,可确认“B=002”所处的目标等级为第二层级,然后将第二层架加粗显示。
举例而言,{“A=001”#“A=001”表示键值对,A表示键,001表示值;
“B=002”#“B=002”表示键值对,B表示键,001表示值;
“C=003”#“C=003”表示键值对,C表示键,003表示值;
“D=004”#“D=004”表示键值对,D表示键,004表示值;
}
将“B=002”进行加粗,加粗后的效果为:
{“A=001”#“A=001”表示键值对,A表示键,001表示值;
“B=002”#“B=002”表示键值对,B表示键,001表示值;
“C=003”#“C=003”表示键值对,C表示键,003表示值;
“D=004”#“D=004”表示键值对,D表示键,004表示值;
}
需要说明的是,上述预定方式包括但不限于:加粗程序代码,改变代码颜色或者用高亮闪烁显示出错的代码。
需要说明的是,断言方式包括但不限于:判断两个参数相等assertEqual、判断两个参数不相等assertNotEqual、判断字符串是否包含assertIn、判断字符串是否不包含assertNotIn、判断是字符串是否包含assertIn(self,member,container,msg=None)、判断是否为真assertTrue(self,expr,msg=None)、判断是否为假assertFalse(self,expr,msg=None)、判断是否为None assertIsNone(self,obj,msg=None)、判断是否不为NoneassertIsNotNone(self,obj,msg=None)。
以下为采用改进方案后的测试用例的断言代码:
#返回结果
Response={“msg”:“成功”,
“data”:
{“response”:“今天天气真好”},
“dev”:[
{“icon”:“001”,“dev”:“001”},
{“icon”:“002”,“dev”:“002”},
{“icon”:“003”,“dev”:“003”},
{“icon”:“004”,“dev”:“004”}
]
}
#断言字典
assert_dict={“msg”:[“equal”,“成功”],
“dev[0].icon.dev”:[“not equal”,“000”],
“data.response”:[“in”,“今天天气”],
“dev[0].icon”:[“not_in”,“666”],
}
#进行断言
assert_result=ac.assert_op(assert_dict,response)
#打印断言结果
print(assert_result)
assert_result=(‘fail 1/4’,
{
‘dev[0].icon.dev’:‘actual:返回结果没有这个层级的key>>>dev[0].icon.dev’}
)
从上述代码可以看出,其采用了断言字典,该字典中设置了多个断言,并支持多种断言方式,且可以看出其在打印断言结果时,可以显示断言总数以及失败的个数,并自动显示未通过的断言,还会给出详细的解释,可以理解的,这种方式对测试工程师会更加友好,节省测试工程师查找bug的时间,还需要说明的是,采用上述方法只需要编写一个断言字典,该字典中可包括多个需要的断言键值对,然后可通过jmespath解析键值对在返回结果的层级,实现断言多个层级的键值对,且断言失败后,与一般断言相比,断言成功会直接显示通过pass,断言失败后则会给出期望结果和实际结果,更加直观显示哪个键断言失败。
图5是根据本申请实施例一种接口测试用例的断言装置,如图5所示,该接口测试用例的断言装置,包括:
获取模块40,用于获取接口测试用例;
断言模块42,用于根据字典结构中的断言对接口测试用例进行断言,其中,字典结构包括:多个断言的键值对以及多个断言的断言方式;
确定模块44,用于基于断言结果确定接口测试用例是否测试通过。
该接口测试用例的断言装置中,获取模块40,用于获取接口测试用例;断言模块42,用于根据字典结构中的断言对接口测试用例进行断言,其中,字典结构包括:多个断言的键值对以及多个断言的断言方式;确定模块44,用于基于断言结果确定接口测试用例是否测试通过,达到了仅需编写一个断言字典,即可支持多个断言以及支持多种断言方式的目的,从而实现了简化代码程序,降低开发人员的开发成本,且便于后期维护的技术效果,进而解决了由于相关技术中在对接口进行测试时,断言的键值对数量有限造成的代码繁琐、开发成本高以及代码维护效率低下的技术问题。
可以理解的,在各种测试中,例如,API测试、Web测试或者APP测试,测试用例是否执行成功,可通过比较实际结果与预期结果是否一致来判断的,当预期结果与实际结果一致,则表示测试用例执行通过,当预期结果与实际结果不一致,则表示测试用例执行失败,而对预期结果与实际结果进行比较的过程,在自动化软件测试中是可通过断言来实现的。
图6是本申请一些可选的确定模块44的结构示意图,如图6所示,该确定模块44包括:
第一获取单元440,用于获取执行接口测试用例对应的返回数据;
第二确定单元442,用于根据返回数据确定接口测试用例对应的多个第一键值对,其中,第一键值对包括:第一键以及该第一键对应的第一值,多个第一键值对对应的第一键不相同;
第二获取单元444,获取字典结构中与多个第一键一一对应的第二键;
第二确定单元446,用于确定第二键对应的第二键值对,比较第二键值对中的第二值是否与第一值相同;
第三确定单元448,用于在比较结果指示所有第二值与第一值相同的情况下,则确定接口测试用例测试通过。
举例说明,接口测试用例测试返回结果数据对应的第一键值对为“A=100”,即,第一键为A,第一键值为100,字典结构存储的第二键值对为“A=200”,即,第二键为A,第二键值为200,即断言方式为Aequal200,因此,第二键值对中的第二值200与第一键值100不同,则认为该接口测试用例测试不通过,而假设字典结构存储的第二键值对为A_00,即,第二键为A,第二键值为100,即断言方式为Aequal00,因此,第二键值对中的第二值100与第一键值100相同,则认为该接口测试用例测试不通过。
需要说明的是,本申请中相关实施例中的获取字典结构中与多个第一键一一对应的第二键,比较第二键值对中的第二值是否与第一值相同,这一过程包括:确定断言的方式,即,基于断言方式确定预期结果,然后,将该预期结果同实际中返回的结果数据进行比较。
举例而言,返回结果数据为:
#四个测试用例分别对应的返回结果数据,四个测试用例分别与A、B、C、D一一对应
{“A=001”#“A=001”表示键值对,A表示键,001表示值;
“B=002”#“B=002”表示键值对,B表示键,001表示值;
“C=003”#“C=003”表示键值对,C表示键,003表示值;
“D=004”#“D=004”表示键值对,D表示键,004表示值;
}
#字典结构中的断言(断言字典)
{“A=001”#,A表示键,001表示值,“=”表示断言的方式equal,;
“B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal;
“C=003”#C表示键,003表示值,“=”表示断言的方式equal
“D=004”#D表示键,004表示值,“=”表示断言的方式equal
}
分析可知,返回结果中“A=001”,而字典结构中A=001,因此,该断言对应的接口用例通过,同理,字典结构“C=003”#C表示键,003表示值,“=”表示断言的方式equal,“D=004”#D表示键,004表示值,“=”表示断言的方式equal,因此,返回结果数据中“C=003”、“D=004”各自对应的接口测试用例也通过。而返回结果中,“B=002”,由于字典结果设置的断言方式为““B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal”,因此,该返回结果数据“B=002”对应的测试用例不通过。
需要说明的是,上述断言的方式可以设置为判断两个参数相等assertEqual、判断两个参数不相等assertNotEqual、判断字符串是否包含assertIn、判断字符串是否不包含assertNotIn等。
容易注意到的是,在比较结果指示任意一个第二值与第一值不相同的情况下,则确定接口测试用例测试不通过,优选的,该方案对应为接口测试用例返回结果数据有多个的情况。
举例而言,#某一个测试用例同时返回的结果数据有4个,分别为A、B、C、D
{“A=001”#“A=001”表示键值对,A表示键,001表示值;
“B=002”#“B=002”表示键值对,B表示键,001表示值;
“C=003”#“C=003”表示键值对,C表示键,003表示值;
“D=004”#“D=004”表示键值对,D表示键,004表示值;
}
#字典结构中的断言(断言字典)
{“A=001”#,A表示键,001表示值,“=”表示断言的方式equal;
“B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal;
“C=003”#C表示键,003表示值,“=”表示断言的方式equal
“D=004”#D表示键,004表示值,“=”表示断言的方式equal
}
分析可知,返回结果中“A=001”,而字典结构中““A=001”#,A表示键,001表示值,“=”表示断言的方式equal”,同理,字典结构“C=003”#C表示键,003表示值,“=”表示断言的方式equal,“D=004”#D表示键,004表示值,“=”表示断言的方式equal,因此,返回结果数据中“A=001”、C=003”、“D=004”各自对应的断言无误,即实际值(返回结果)与期望值(字典结构中的断言方式以及参数值)是相同的。而返回结果中,“B=002”,由于字典结果设置的断言方式为““B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal(即B不能等于002)”,因此,该返回结果数据“B=002”对应的断言存在错误,因此,就会导致该测试用例测试不通过。
本申请一些可选的实施例中,确定接口测试用例测试不通过之后,可确定与第二值不相同的第一值所在的第一键值对为目标键值对;打印目标键值对,以及目标键值对应的正确的第二值。
举例而言,#某一个测试用例同时返回的结果数据有4个,分别为A、B、C、D
{“A=001”#“A=001”表示键值对,A表示键,001表示值;
“B=002”#“B=002”表示键值对,B表示键,001表示值;
“C=003”#“C=003”表示键值对,C表示键,003表示值;
“D=004”#“D=004”表示键值对,D表示键,004表示值;
}
#字典结构中的断言(断言字典)
{“A=001”#,A表示键,001表示值,“=”表示断言的方式equal;
“B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal;
“C=003”#C表示键,003表示值,“=”表示断言的方式equal
“D=004”#D表示键,004表示值,“=”表示断言的方式equal
}
#打印断言结果
print(assert_result)
assert_result=({
‘返回结果数据“B=002”:有误’;正确结果应为“B!=002”}
)
通过上述分析可知,返回结果中“A=001”,而字典结构中““A=001”#,A表示键,001表示值,“=”表示断言的方式equal”,同理,字典结构“C=003”#C表示键,003表示值,“=”表示断言的方式equal,“D=004”#D表示键,004表示值,“=”表示断言的方式equal,因此,返回结果数据中“A=001”、C=003”、“D=004”各自对应的断言无误,即实际值(返回结果)与期望值(字典结构中的断言方式以及参数值)是相同的。而返回结果中,“B=002”,由于字典结果设置的断言方式为““B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal(即B不能等于002)”,因此,该返回结果数据“B=002”对应的断言存在错误,因此,可将返回结果数据“B=002”作为目标键值对,然后在打印结果将“B=002”作为目标键值对,并输出“返回结果数据“B=002”:有误’;正确结果应为“B!=002””。
本申请一些实施例中,可获取目标键值对在接口测试用例中的目标层级;展示目标层级;采用预定形式标记层级对应的位置,并展示采用预定形式标记后的位置。
举例而言,#某一个测试用例同时返回的结果数据有4个,分别为A、B、C、D
{“A=001”#“A=001”表示键值对,A表示键,001表示值;
“B=002”#“B=002”表示键值对,B表示键,001表示值;
“C=003”#“C=003”表示键值对,C表示键,003表示值;
“D=004”#“D=004”表示键值对,D表示键,004表示值;
}
#字典结构中的断言(断言字典)
{“A=001”#,A表示键,001表示值,“=”表示断言的方式equal;
“B!=002”#B表示键,002表示值,“!=”表示断言的方式Not_equal;
“C=003”#C表示键,003表示值,“=”表示断言的方式equal
“D=004”#D表示键,004表示值,“=”表示断言的方式equal
}
#打印断言结果
print(assert_result)
assert_result=({
‘返回结果数据“B=002”:有误’;正确结果应为“B!=002”}
)
基于上述分析可知,该返回结果数据“B=002”对应的断言存在错误,因此,可将返回结果数据“B=002”作为目标键值对,然后在打印结果将“B=002”作为目标键值对,并输出“返回结果数据“B=002”:有误’;正确结果应为“B!=002””,为了便于测试人员或者开发人员快速确认出现错误的地方,可确认“B=002”所处的目标等级为第二层级,然后将第二层架加粗显示。
举例而言,{“A=001”#“A=001”表示键值对,A表示键,001表示值;
“B=002”#“B=002”表示键值对,B表示键,001表示值;
“C=003”#“C=003”表示键值对,C表示键,003表示值;
“D=004”#“D=004”表示键值对,D表示键,004表示值;
}
将“B=002”进行加粗,加粗后的效果为:
{“A=001”#“A=001”表示键值对,A表示键,001表示值;
“B=002”#“B=002”表示键值对,B表示键,001表示值;
“C=003”#“C=003”表示键值对,C表示键,003表示值;
“D=004”#“D=004”表示键值对,D表示键,004表示值;
}
需要说明的是,上述预定方式包括但不限于:加粗程序代码,改变代码颜色或者用高亮闪烁显示出错的代码。
可以理解的,在基于断言结果确定接口测试用例是否测试通过之后,为了便于开发人员直观观察,可以显示测试用例中未通过的断言数量以及字典结构中的断言总数量。
根据本申请实施例的另一方面,还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制非易失性存储介质所在设备执行任意一种接口测试用例的断言方法。
具体地,上述存储介质用于存储执行以下功能的程序指令,实现以下功能:
获取接口测试用例;根据字典结构中的断言对接口测试用例进行断言,其中,字典结构包括:多个断言的键值对以及多个断言的断言方式;基于断言结果确定接口测试用例是否测试通过。
根据本申请实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行任意一种接口测试用例的断言方法。
具体地,上述处理器用于调用存储器中的程序指令,实现以下功能:
获取接口测试用例;根据字典结构中的断言对接口测试用例进行断言,其中,字典结构包括:多个断言的键值对以及多个断言的断言方式;基于断言结果确定接口测试用例是否测试通过。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种接口测试用例的断言方法,其特征在于,包括:
获取接口测试用例;
根据字典结构中的断言对所述接口测试用例进行断言,其中,所述字典结构包括:多个所述断言的键值对以及多个所述断言的断言方式;
基于所述断言结果确定所述接口测试用例是否测试通过。
2.根据权利要求1所述的方法,其特征在于,基于所述断言结果确定所述接口测试用例是否通过测试,包括:
获取执行所述接口测试用例对应的返回数据;
根据所述返回数据确定所述接口测试用例对应的多个第一键值对,其中,所述第一键值对包括:第一键以及该第一键对应的第一值,所述多个第一键值对对应的第一键不相同;
获取所述字典结构中与多个所述第一键一一对应的第二键;
确定所述第二键对应的第二键值对,比较所述第二键值对中的第二值是否与所述第一值相同;
在比较结果指示所有所述第二值与所述第一值相同的情况下,则确定所述接口测试用例测试通过。
3.根据权利要求2所述的方法,其特征在于,在比较结果指示任意一个所述第二值与所述第一值不相同的情况下,则确定所述接口测试用例测试不通过。
4.根据权利要求3所述的方法,其特征在于,确定所述接口测试用例测试不通过之后,所述方法还包括:
确定与所述第二值不相同的第一值所在的第一键值对为目标键值对;
打印所述目标键值对,以及所述目标键值对应的正确的所述第二值。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
获取所述目标键值对在所述接口测试用例中的目标层级;
展示所述目标层级;
采用预定形式标记所述层级对应的位置,并展示采用所述预定形式标记后的所述位置。
6.根据权利要求1所述的方法,其特征在于,基于所述断言结果确定所述接口测试用例是否测试通过之后,所述方法还包括:
显示所述接口测试用例中未通过的断言数量以及所述字典结构中的断言总数量;
显示所述接口测试用例中未通过的断言,并显示所述未通过的断言对应的预期结果。
7.根据权利要求1所述的方法,其特征在于,其中,所述断言方式包括:
判断两个参数相等assertEqual、判断两个参数不相等assertNotEqual、判断字符串是否包含assertIn、判断字符串是否不包含assertNotIn。
8.一种接口测试用例的断言装置,其特征在于,包括:
获取模块,用于获取接口测试用例;
断言模块,用于根据字典结构中的断言对所述接口测试用例进行断言,其中,所述字典结构包括:多个所述断言的键值对以及多个所述断言的断言方式;
确定模块,用于基于所述断言结果确定所述接口测试用例是否测试通过。
9.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行权利要求1至7中任意一项所述接口测试用例的断言方法。
10.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至7中任意一项所述接口测试用例的断言方法。
CN202110729380.2A 2021-06-29 2021-06-29 接口测试用例的断言方法以及装置 Pending CN113434419A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110729380.2A CN113434419A (zh) 2021-06-29 2021-06-29 接口测试用例的断言方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110729380.2A CN113434419A (zh) 2021-06-29 2021-06-29 接口测试用例的断言方法以及装置

Publications (1)

Publication Number Publication Date
CN113434419A true CN113434419A (zh) 2021-09-24

Family

ID=77757762

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110729380.2A Pending CN113434419A (zh) 2021-06-29 2021-06-29 接口测试用例的断言方法以及装置

Country Status (1)

Country Link
CN (1) CN113434419A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107092535A (zh) * 2017-04-18 2017-08-25 上海雷腾软件股份有限公司 用于测试接口的数据存储的方法及设备
CN107122296A (zh) * 2017-04-18 2017-09-01 上海雷腾软件股份有限公司 用于测试接口的数据断言的方法及设备
CN112199300A (zh) * 2020-11-13 2021-01-08 新华三大数据技术有限公司 一种接口测试方法、装置、电子设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107092535A (zh) * 2017-04-18 2017-08-25 上海雷腾软件股份有限公司 用于测试接口的数据存储的方法及设备
CN107122296A (zh) * 2017-04-18 2017-09-01 上海雷腾软件股份有限公司 用于测试接口的数据断言的方法及设备
CN112199300A (zh) * 2020-11-13 2021-01-08 新华三大数据技术有限公司 一种接口测试方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
KR102214297B1 (ko) 조건부 검증 규칙
CN107665171B (zh) 自动回归测试方法及装置
EP3623948B1 (en) Method and system for code analysis to identify causes of code smells
US20140310050A1 (en) Methods And Apparatus For Project Portfolio Management
US20160239402A1 (en) Software commit risk level
KR20170052668A (ko) 데이터 구동 테스트 프레임워크
US20210263841A1 (en) Machine code analysis for identifying software defects
CN107080945B (zh) 测试游戏中人工智能行为的方法、装置及电子设备
JP7404839B2 (ja) ソフトウェアプログラム不良位置の識別
CN109101410B (zh) 一种风险驱动测试方法和装置以及计算机可读存储介质
US11663113B2 (en) Real time fault localization using combinatorial test design techniques and test case priority selection
US6694290B1 (en) Analyzing an extended finite state machine system model
CN117495544A (zh) 一种基于沙箱的风控评估方法、系统、终端及存储介质
WO2024118188A1 (en) Computer application error root cause diagnostic tool
US20210200833A1 (en) Health diagnostics and analytics for object repositories
CN116302079A (zh) 一种业务数据处理方法、装置、电子设备及存储介质
CN113434419A (zh) 接口测试用例的断言方法以及装置
CN112130838A (zh) 交易数据处理方法及装置
US20100293018A1 (en) Test Model Abstraction For Testability in Product Line Engineering
US20070277133A1 (en) Model correspondence method and device
Kruif Using d-NFGs to identify and eliminate dead code in C# programs
CN116594883A (zh) 代码测试方法、装置、计算机设备和存储介质
JPH11282722A (ja) プログラム検証方法
CN113419770A (zh) 应用的页面更新方法、装置、设备和计算机可读存储介质
CN115936611A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20210924

RJ01 Rejection of invention patent application after publication