CN117234944A - 一种基于pytest的接口自动化测试方法 - Google Patents

一种基于pytest的接口自动化测试方法 Download PDF

Info

Publication number
CN117234944A
CN117234944A CN202311482255.1A CN202311482255A CN117234944A CN 117234944 A CN117234944 A CN 117234944A CN 202311482255 A CN202311482255 A CN 202311482255A CN 117234944 A CN117234944 A CN 117234944A
Authority
CN
China
Prior art keywords
function
test
use case
master
report
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.)
Granted
Application number
CN202311482255.1A
Other languages
English (en)
Other versions
CN117234944B (zh
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.)
Tianjin Hualai Technology Co Ltd
Original Assignee
Tianjin Hualai Technology 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 Tianjin Hualai Technology Co Ltd filed Critical Tianjin Hualai Technology Co Ltd
Priority to CN202311482255.1A priority Critical patent/CN117234944B/zh
Publication of CN117234944A publication Critical patent/CN117234944A/zh
Application granted granted Critical
Publication of CN117234944B publication Critical patent/CN117234944B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种基于pytest的接口自动化测试方法,包括如下步骤:在配置文件中,注册master和sub两个标签;在配置文件中,为注册测试函数和第一测试函数添加对应的标签装饰器;在配置文件的钩子函数中,解析每个函数的标签信息,并根据标签信息将函数记录至不同的字典中;在钩子函数中,获取master用例的测试结果,并记录到master字典中;在钩子函数中,获取与sub用例相对应的master用例,并根据master用例的测试结果对sub用例进行处理,得到测试报告。本发明有益效果:当遇到因前置用例失败而导致的大规模失败时,仅需关注几个主用例的fail情况,其余受影响的用例状态均为skip报告中一目了然,极大的提升了报告的可读性。

Description

一种基于pytest的接口自动化测试方法
技术领域
本发明属于计算机技术领域,尤其是涉及一种基于pytest的接口自动化测试方法。
背景技术
pytest 是一种广泛应用的 python 测试框架,其优雅的简洁性和强大的功能拓展特性使得开发者能够方便地进行单元测试、功能测试和极限测试。Pytest 支持的断言引擎和插件系统,赋予了测试人员以高度的编程便利性,并能通过整洁的报告展示测试结果。
在软件开发中,接口测试是至关重要的,它有助于保证各个组件之间的交互性能和正常工作状态。接口自动化测试,是在快速开发和迭代的现代软件工程环境中,提高工作效率,提高软件质量的有效手段。
通过pytest来编写接口自动化测试用例是业内常用的一种接口自动化技术解决方案。然而,在接口自动化测试用例的运行过程中,经常由于一些前置测试用例的失败,导致后续若干用例接连失败,即使设计用例时会尽量避免用例之间的关联,但实际生产过程中并不能完全避免,这种情况下在pytest提供的测试报告中,看到了大规模的失败但是确很难一次定位到用例失败的问题原因,需要依靠测试人员的对自动化用例的熟练度进行分析,不利于敏捷开发,提高了测试报告阅读的难度,加大了测试人员的工作量。
同时pytest提供的默认html报告仅显示了测试case函数名以及各个测试case的运行日志打印内容,过于简洁,有一定的阅读难度,自动化测试信息显示不全,并且Linux环境下测试报告可能有中文乱码的问题。
发明内容
有鉴于此,本发明旨在提出一种基于pytest的接口自动化测试方法,以期解决上述部分技术问题中的至少之一。
为达到上述目的,本发明的技术方案是这样实现的:
本发明第一方面提出了一种基于pytest的接口自动化测试方法,包括如下步骤:
S1、在配置文件中,注册master和sub两个标签;
S2、在配置文件中,为注册测试函数和与注册测试函数对应的第一测试函数添加对应的标签装饰器,得到master用例与相应的sub用例;
S3、在配置文件的钩子函数中,解析注册测试函数和第一测试函数的标签装饰器的信息,并根据标签装饰器的信息将函数记录至不同的字典中;
S4、对master用例与sub用例执行测试,在钩子函数中获取master用例的测试结果,并记录到master字典中;
S5、在钩子函数中,获取与sub用例相对应的master用例,并根据master用例的测试结果对sub用例进行处理,得到测试报告。
进一步的,步骤S2添加的标签装饰器具体如下:
为注册测试函数添加master标签装饰器,将注册测试函数标记为master用例;
为第一测试函数添加sub标签装饰器,将第一测试函数标记为sub用例。
进一步的,解析函数的标签信息后,若函数的标签信息显示该函数被标记为master用例,则将该函数记录到master字典中;
若函数的标签信息显示该函数被标记为sub用例,则将该函数记录到sub字典中。
进一步的,根据master用例的测试结果对sub用例进行处理的过程如下:
若master用例的测试失败,则为相应的sub用例添加skip标记,打印日志提示作为测试报告;
若master用例的测试成功,则通知相应的sub用例正常执行。
进一步的,还包括,为注册测试函数和第一测试函数添加功能描述项,其的过程具体如下:
A1、在每个测试函数定义前使用中文注释,描述该函数测试的功能点;
A2、在配置文件文件中添加表头钩子函数和表行钩子函数;
表头钩子函数在测试报告标题行添加一个新的列并命名为“功能描述”,表行钩子函数在每个测试报告行执行时,获取到当前测试函数的注释内容;
A3、通过插入函数将获取到的当前测试函数的注释内容插入到“功能描述”列中。
进一步的,若linux系统下测试报告的中文显示为乱码,则进行如下操作:
在配置文件中添加一个报告钩子函数,在报告钩子函数中对测试报告中的中文数据项进行字符编码转换处理;
在报告钩子函数对中文描述进行字符格式转换处理,处理完毕后重新赋值给原始数据项。
本发明第二方面提出了一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,其特征在于:所述处理器用于执行上述第一方面任一所述的一种基于pytest的接口自动化测试方法。
本发明第三方面提出了一种服务器,其特征在于:包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行如第一方面任一所述的一种基于pytest的接口自动化测试方法。
本发明第四方面提出了一种计算机可读取存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现第一方面任一项所述的一种基于pytest的接口自动化测试方法。
相对于现有技术,本发明所述的一种基于pytest的接口自动化测试方法具有以下有益效果:
1)通过本发明所述技术方案,当遇到因前置用例失败而导致的大规模失败时,仅需关注几个主用例的fail情况,其余受影响的用例状态均为skip报告中一目了然,极大的提升了报告的可读性。
2)根据业务需求添加了测试函数功能描述项,并解决了Linux环境下测试报告可能有中文乱码的问题。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例所述的一种基于pytest的接口自动化测试方法的流程示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面将参考附图并结合实施例来详细说明本发明。
实施例一:
如图1所示:一种基于pytest的接口自动化测试方法,包括如下步骤:
S1、在配置文件中,注册master和sub两个标签。
S2、在配置文件中,为注册测试函数和第一测试函数添加对应的标签装饰器,具体为:
为注册测试函数添加master标签装饰器,将注册测试函数标记为master用例;
为第一测试函数添加sub标签装饰器,将第一测试函数标记为sub用例。
S3、在配置文件的钩子函数中,解析每个函数的标签信息,并根据标签信息将函数记录至不同的字典中,具体为:
解析函数的标签信息后,若函数的标签信息显示该函数被标记为master用例,则将该函数记录到master字典中;
若函数的标签信息显示该函数被标记为sub用例,则将该函数记录到sub字典中。
S4、对master用例与sub用例执行测试,在钩子函数中获取master用例的测试结果,并记录到master字典中;
S5、在钩子函数中,获取与sub用例相对应的master用例,并根据master用例的测试结果对sub用例进行处理,得到测试报告,具体为:
若master用例的测试失败,则为相应的sub用例添加skip标记,打印日志提示作为测试报告;
若master用例的测试成功,则通知相应的sub用例正常执行。
为注册测试函数和第一测试函数添加功能描述项的过程具体如下:
A1、在注册测试函数和第一测试函数定义前使用中文注释,描述该函数测试的功能点;
A2、在配置文件文件中添加表头钩子函数和表行钩子函数;
表头钩子函数在测试报告标题行添加一个新的列并命名为“功能描述”,表行钩子函数在每个测试报告行执行时,获取到当前测试函数的注释内容;
A3、通过插入函数将获取到的当前测试函数的注释内容插入到“功能描述”列中。
若linux系统下测试报告的中文显示为乱码,则进行如下操作:
在配置文件中添加一个报告钩子函数,在报告钩子函数中对测试报告中的中文数据项进行字符编码转换处理;
在报告钩子函数对中文描述进行字符格式转换处理,具体为:
str(item.function.__doc__);
其中,item.function.__doc__获取到的是测试函数的注释docstring,docstring是一个unicode字符串,包含了中文注释内容;
在将docstring插入到HTML报告表格时,需要先转换为str类型,因为HTML表格只接受str而不接受unicode;
str()函数可以将unicode转换为str without changing the contents。
report.nodeid.encode("unicode_escape").decode("utf-8");
其中,report.nodeid:表示一个nodeid的字符串;
encode("unicode_escape"):表示对该字符串进行Unicode编码,将字符串转换为Unicode的转义格式;
decode("utf-8"):表示将Unicode转义格式再解码为utf-8编码的字符串。
这样做的目的是为了避免原字符串中可能包含的特殊字符给后续处理带来问题,通过Unicode转义,可以将所有字符明确转换为Unicode编码,然后再转回utf-8,从而获取一个明确且可处理的字符串。
处理完毕后重新赋值给原始数据项。
实施例二:
一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,所述处理器用于执行上述实施例一任一所述的一种基于pytest的接口自动化测试方法。
实施例三:
一种服务器,包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行如实施例一任一所述的一种基于pytest的接口自动化测试方法。
实施例四:
一种计算机可读取存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现实施例一任一项所述的一种基于pytest的接口自动化测试方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。例如,以上所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。上述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种基于pytest的接口自动化测试方法,其特征在于:
包括如下步骤:
S1、在配置文件中,注册master和sub两个标签;
S2、在配置文件中,为注册测试函数和与注册测试函数对应的第一测试函数添加对应的标签装饰器,得到master用例与相应的sub用例;
S3、在配置文件的钩子函数中,解析注册测试函数和第一测试函数每个函数的标签装饰器的信息,并根据标签装饰器的信息将函数记录至不同的字典中;
S4、对master用例与sub用例执行测试,在钩子函数中,获取master用例的测试结果,并记录到master字典中;
S5、在钩子函数中,获取与sub用例相对应的master用例,并根据master用例的测试结果对sub用例进行处理,得到测试报告。
2.根据权利要求1所述的一种基于pytest的接口自动化测试方法,其特征在于:
步骤S2添加的标签装饰器具体如下:
为注册测试函数添加master标签装饰器,将注册测试函数标记为master用例;
为第一测试函数添加sub标签装饰器,将第一测试函数标记为sub用例。
3.根据权利要求2所述的一种基于pytest的接口自动化测试方法,其特征在于:
解析函数的标签信息后,若函数的标签信息显示该函数被标记为master用例,则将该函数记录到master字典中;
若函数的标签信息显示该函数被标记为sub用例,则将该函数记录到sub字典中。
4.根据权利要求1所述的一种基于pytest的接口自动化测试方法,其特征在于:
根据master用例的测试结果对sub用例进行处理的过程如下:
若master用例的测试失败,则为相应的sub用例添加skip标记,打印日志提示作为测试报告;
若master用例的测试成功,则通知相应的sub用例正常执行。
5.根据权利要求1所述的一种基于pytest的接口自动化测试方法,其特征在于:
还包括,为注册测试函数和第一测试函数添加功能描述项,其的过程具体如下:
A1、在注册测试函数和第一测试函数定义前,使用中文注释描述该函数测试的功能点;
A2、在配置文件文件中添加表头钩子函数和表行钩子函数;
表头钩子函数在测试报告标题行添加一个新的列并命名为“功能描述”,表行钩子函数在每个测试报告行执行时,获取到当前测试函数的注释内容;
A3、通过插入函数将获取到的当前测试函数的注释内容插入到“功能描述”列中。
6.根据权利要求1所述的一种基于pytest的接口自动化测试方法,其特征在于:
若linux系统下测试报告的中文显示为乱码,则进行如下操作:
在配置文件中添加一个报告钩子函数,在报告钩子函数中对测试报告中的中文数据项进行字符编码转换处理;
在报告钩子函数对中文描述进行字符格式转换处理,处理完毕后重新赋值给原始数据项。
7.一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,其特征在于:所述处理器用于执行上述权利要求1-6任一所述的一种基于pytest的接口自动化测试方法。
8.一种服务器,其特征在于:包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行如权利要求1-6任一所述的一种基于pytest的接口自动化测试方法。
9.一种计算机可读取存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1-6任一项所述的一种基于pytest的接口自动化测试方法。
CN202311482255.1A 2023-11-09 2023-11-09 一种基于pytest的接口自动化测试方法 Active CN117234944B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311482255.1A CN117234944B (zh) 2023-11-09 2023-11-09 一种基于pytest的接口自动化测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311482255.1A CN117234944B (zh) 2023-11-09 2023-11-09 一种基于pytest的接口自动化测试方法

Publications (2)

Publication Number Publication Date
CN117234944A true CN117234944A (zh) 2023-12-15
CN117234944B CN117234944B (zh) 2024-01-30

Family

ID=89082850

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311482255.1A Active CN117234944B (zh) 2023-11-09 2023-11-09 一种基于pytest的接口自动化测试方法

Country Status (1)

Country Link
CN (1) CN117234944B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882107A (zh) * 2010-06-28 2010-11-10 山东中创软件商用中间件股份有限公司 一种web应用自动化测试的方法及装置
US20180052764A1 (en) * 2016-08-16 2018-02-22 American Express Travel Related Services Company, Inc. Systems and methods for software testing and test management
CN113609015A (zh) * 2021-08-05 2021-11-05 先进操作系统创新中心(天津)有限公司 一种基于Bash Shell的自动化测试框架
CN115080398A (zh) * 2022-06-21 2022-09-20 徐工汉云技术股份有限公司 一种接口自动化测试系统及方法
US20220308991A1 (en) * 2021-03-26 2022-09-29 Fujitsu Limited Test processing method and information processing apparatus
CN115168230A (zh) * 2022-07-27 2022-10-11 济南浪潮数据技术有限公司 一种执行测试用例的方法、装置及介质
CN115576817A (zh) * 2022-10-14 2023-01-06 中国农业银行股份有限公司 一种自动化测试系统、方法、电子设备及存储介质
CN115809200A (zh) * 2022-12-20 2023-03-17 平安银行股份有限公司 基于python的UI自动化用例调用方法及装置
CN116431522A (zh) * 2023-06-12 2023-07-14 天翼云科技有限公司 一种低代码对象存储网关自动化测试方法及系统
US20230297496A1 (en) * 2022-03-15 2023-09-21 Accenture Global Solutions Limited System and method for serverless application testing
CN116955203A (zh) * 2023-08-11 2023-10-27 中国电信股份有限公司 服务接口的自动化测试方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882107A (zh) * 2010-06-28 2010-11-10 山东中创软件商用中间件股份有限公司 一种web应用自动化测试的方法及装置
US20180052764A1 (en) * 2016-08-16 2018-02-22 American Express Travel Related Services Company, Inc. Systems and methods for software testing and test management
US20220308991A1 (en) * 2021-03-26 2022-09-29 Fujitsu Limited Test processing method and information processing apparatus
CN113609015A (zh) * 2021-08-05 2021-11-05 先进操作系统创新中心(天津)有限公司 一种基于Bash Shell的自动化测试框架
US20230297496A1 (en) * 2022-03-15 2023-09-21 Accenture Global Solutions Limited System and method for serverless application testing
CN115080398A (zh) * 2022-06-21 2022-09-20 徐工汉云技术股份有限公司 一种接口自动化测试系统及方法
CN115168230A (zh) * 2022-07-27 2022-10-11 济南浪潮数据技术有限公司 一种执行测试用例的方法、装置及介质
CN115576817A (zh) * 2022-10-14 2023-01-06 中国农业银行股份有限公司 一种自动化测试系统、方法、电子设备及存储介质
CN115809200A (zh) * 2022-12-20 2023-03-17 平安银行股份有限公司 基于python的UI自动化用例调用方法及装置
CN116431522A (zh) * 2023-06-12 2023-07-14 天翼云科技有限公司 一种低代码对象存储网关自动化测试方法及系统
CN116955203A (zh) * 2023-08-11 2023-10-27 中国电信股份有限公司 服务接口的自动化测试方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
郝继锋;李运喜;任晓瑞;徐晓光;: "一种轻量级操作系统测试框架设计与实现", 航空计算技术, no. 05 *

Also Published As

Publication number Publication date
CN117234944B (zh) 2024-01-30

Similar Documents

Publication Publication Date Title
CN108491199B (zh) 一种自动生成接口的方法及终端
CN109710508B (zh) 测试方法、测试装置、测试设备及计算机可读存储介质
CN101118515B (zh) 一种表单的自动测试方法及装置
Butler et al. Relating identifier naming flaws and code quality: An empirical study
CN109697160B (zh) 一种以太网接口软件自动化测试系统及方法
CN110908890A (zh) 一种接口的自动测试方法和装置
CN113723063B (zh) 一种rtf转html并在pdf文件实现效果的方法
CN117234944B (zh) 一种基于pytest的接口自动化测试方法
CN112632425B (zh) 一种离线资源文件的生成方法、装置、设备及存储介质
JP2008186417A (ja) 文字化けを検出するための装置、方法、及びプログラム
CN110543641A (zh) 一种中外文信息对比方法及装置
CN107797917B (zh) 性能测试脚本生成方法及装置
CN111667214B (zh) 基于二维码的货物信息获取方法、装置及电子设备
CN110781647B (zh) 一种基于Flink实现数据格式校验的方法
CN114328274A (zh) 测试模板生成方法、装置、计算机设备和存储介质
CN112699279A (zh) 组件自动化处理方法、装置、设备和存储介质
CN112181434A (zh) 组合仪表故障的诊断方法、装置、设备及存储介质
CN112733199A (zh) 数据处理方法、装置、电子设备及可读存储介质
CN111967274B (zh) 标签转换处理方法、装置、电子设备及可读存储介质
CN113408250B (zh) 一种项目文件的处理方法和装置
CN117273021A (zh) 一种文档翻译精准还原非文本元素的方法
CN114895987B (zh) 消息处理方法、装置、设备及计算机存储介质
CN113238889B (zh) 一种漏洞的问题定位方法及装置、存储介质、终端
CN111967274A (zh) 标签转换处理方法、装置、电子设备及可读存储介质
CN113986212A (zh) 一种生成pad图的方法和终端设备

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