软件测试 / 测试开发 / 全日制|Pytest 参数化神器,pytest.mark.parametrize() 使用
前言
当我们要使用pytest
输入多个数据对一个功能进行测试时,如果写多个测试用例的话,那就完全体现不出通过代码来执行测试的优势了,这个时候,就轮到pytest
的参数化功能闪亮登场了。所谓参数化,就是就是把测试过程中的数据提取出来,通过参数传递不同的数据来驱动用例运行。其实也就是数据驱动的概念。本文就给大家介绍一下pytest
的参数化和数据驱动。
参数化方式
在unittest
中,我们使用 ddt 库配合unittest
实现数据驱动,在 pytest 中并不需要额外的库,通过pytest.mark.parametrize()
即可实现参数化。parametrize()
的第一个参数是用逗号分割的字符串列表,第二个参数是一个值列表。
pytest
有三种传参方式:
@pytest.mark.parametrize()
通过装饰器方式进行参数化(最常使用)pytest.fixture()
方式进行参数化,fixture
装饰的函数可以作为参数传入其他函数conftest.py
文件中存放参数化函数,可作用于模块内的所有测试用例
单个传参
示例代码如下:
复制代码
执行结果如下:
复制代码
注:@pytest.mark.parametrize()
装饰器接收两个参数,第一个参数是以字符串的形式标识用例函数的参数,第二个参数以列表或元组的形式传递测试数据。
多个传参
示例代码如下:
复制代码
运行结果如下:
复制代码
注:有多个参数时,参数之间要用逗号分隔,参数名称和个数要一一对应
总结
参数化测试是 pytest 中一个强大的功能,可以帮助开发者更高效地编写测试用例,提高代码覆盖率,并简化测试代码。后续我们还将介绍使用 yaml 等文件来实现更高层次的参数化和数据驱动测试,希望本文能够帮到大家!
评论