写点什么

软件测试 | parametrize 实现参数化

  • 2023-03-03
    北京
  • 本文字数:884 字

    阅读完需:约 3 分钟

参数化用例

参数化用例可以帮我们更好的管理测试用例,将测试数据与测试用例分离,好的测试框架是允许对测试 用例实现参数化功能。尤其是接口自动化测试,接口里有大量参数,不同参数又有多种组合方式,参数 化在接口测试中起到非常重要的作用。

使用 parametrize 实现参数化

使用 @pytest.mark.paramtrize(data,param) 装饰测试方法,其中 data 是自定义的参数名, param 是引入的参数列表。

@pytest.mark.parametrize("test_input,expected",[("3+5",8),("2+5",7),("7*5",35)])def test_eval(test_input,expected): print(test_input, expected)
复制代码

运行结果:

...PASSED [ 33%]3+5 8PASSED [ 66%]2+5 7PASSED [100%]7*5 35...
复制代码

整个执行过程中,pytest 将参数列表 [("3+5",8),("2+5",7),("7*5",35)] 中的三组数据取出来,每 组数据生成一条测试用例。

多次使用 parametrize

同一个测试用例还可以同时添加多个 @pytest.mark.parametrize 装饰器, 多个 parametrize 的所有 元素互相组合(类似笛卡儿乘积),生成大量测试用例。

场景:

比如登录场景,用户名输入情况有 n 种,密码的输入情况有 m 种,验证所有情况的用户名和密码,就 会涉及到 n*m 种组合的测试用例,如果把这些数据一一的列出来,工作量也是非常大的。pytest 提供了 一种参数化的方式,将多组测试数据自动组合,生成大量的测试用例。示例代码如下:

@pytest.mark.parametrize("x",[1,2])@pytest.mark.parametrize("y",[8,10,11])def test_foo(x,y): print(f"测试数据组合x: {x} , y:{y}")
复制代码

运行结果:

test_mark_paramize.py::test_foo[8-1]test_mark_paramize.py::test_foo[8-2]test_mark_paramize.py::test_foo[10-1]test_mark_paramize.py::test_foo[10-2]test_mark_paramize.py::test_foo[11-1]test_mark_paramize.py::test_foo[11-2]
复制代码

分析如上运行结果,测试方法 test_foo( ) 添加了两个 @pytest.mark.parametrize() 装饰器,两个装 饰器分别提供两个参数值的列表, 2 * 3 = 6 种组合,pytest 便会生成 6 条测试用例。在测试中通常 使用这种方法使参数自由组合,可以实现全面的测试。

搜索微信公众号:TestingSudio 霍格沃兹的干货都很硬核

用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | parametrize实现参数化_测试_测吧(北京)科技有限公司_InfoQ写作社区