python unittest框架参数化学习

liftword2个月前 (03-17)技术文章7

参数化

有些测试用例会考虑正向、逆向、边界、极端等情况,一个测试方法上会有多种不同的参数,使用参数化可以实现参数数据和脚本分离,可以管理大量参数数据,循环执行测试用例,提高代码复用率。

unittest框架本身不支持参数化,实现参数化需要配合第三方库实现。使用比较简单的就是ddt和paramterized。

ddt

ddt(Data Driven Testing)即数据驱动测试,ddt可以完美应用于unittest框架实现参数化,ddt通过装饰器的方式来调用,装饰器有类装饰器和函数装饰器两种。

安装

通过命令pip install ddt 进行安装,也可以在pycharm中安装,如下图所示:

实战

测试用例代码如下所示:

类装饰器@ddt表示类使用ddt

方法装饰器@data()传递参数,可以传递单个参数,参数数组,参数元组,参数字典等

方法装饰器@unpack用来拆分参数数据,可以拆分元组、列表、字典

方法装饰器@file_data("参数文件路径")用来导入外部参数文件,参数文件可以是josn文件和yaml文件,参数文件里的属性要和方法形参对应。如下图所示:

如果参数文件是txt文件,需要先读取txt文件,再使用@data装饰器填入参数,方法名前加*号,如下图所示:

parameterized

parameterized库的使用方法和ddt类似,不需要使用类装饰器,只使用方法装饰器@parameterized.expand就可以对参数进行参数化了。

安装

通过命令pip install parameterized 进行安装

实战

测试用例代码如下图所示:

相关文章

Python 函数参数

1.函数基本参数#基本样例 函数参数的定义要和调用参数匹配,否则会报错 def fun01(a, b): print(a, b) if __name__ == '__main__':...

真相!Python 默认值参数深度解析,从踩坑到精通的进阶秘籍

一、开发中遇到的问题问题 1:默认值参数为可变对象的陷阱在 Python 开发里,不少初学者会在默认值参数为可变对象时踩坑。比如,我们想定义一个函数,用于向列表中添加元素,代码如下:def add_t...

Python 函数之参数

定义一个函数非常简单,但是怎么定义一个函数,需要什么参数,怎么去调用却是我们需要去思考的问题。如同大多数语言一样(如 Java),Python 也提供了多种参数的设定(如:默认值参数、关键字参数、形参...

Python命令行参数解析模块argparse

前言以前 optparse 比较火,但是在python2.7版本后,官方不再维护这个模块,转而大力支持 argparse 。argparse 模块可以让人轻松编写用户友好的命令行接口。她可以从 sys...

【Python程序开发系列】一文总结Python函数参数和传递方式

这是我的第217篇原创文章。一、引言函数,在定义的时候,可以有参数的,也可以没有参数。从函数定义的角度来看,参数可以分为两种:必选参数:调用函数时必须要指定的参数,在定义时没有等号可选参数:也叫默认参...

python函数参数详解

python有两种传参的方式,位置参数和关键字参数位置参数位置参数是基于它们的位置或顺序传递给函数的参数。这些参数是必需的,并且必须按照与函数参数列表匹配的正确顺序提供。以下是一个示例:def gre...