参数化parametrize

parametrizing

  1.使用pytest.mark.parametrize装饰器实现测试用例参数化
复制代码
import pytest
@pytest.mark.parametrize("test_input,expected",
                         [('3+5', 8),
                          ('1+3', 4),
                          ('6*4', 30), ])
def test_eval(test_input, expected):
    assert eval(test_input) == expected

if __name__ == '__main__':
    pytest.main(['-s', 'test_fixture.py'])
复制代码
0
  2.可以标记单个测试实例在参数话,如使用内置的mark.xfail
复制代码
import pytest
@pytest.mark.parametrize("test_input,expected",[
    ('3+5',8),
    ('1+4',5),
    pytest.param('4*6', 4, marks=pytest.mark.xfail),
    ])

def test_eval(test_input, expected):
    print("---------开始用例---------")
    assert eval(test_input) ==expected

if __name__ == '__main__':
    pytest.main(['-s', 'test_fixture.py'])
复制代码
0

参数组合

  如果想获得多个参数化参数的所有组合,可以堆叠参数化装饰器
复制代码
# 参数组合
import pytest
@pytest.mark.parametrize("x", [0, 1])
@pytest.mark.parametrize("y", [2, 3])
def test_foo(x, y):
    print("测试数据组合:x->%s,y->%s" % (x, y))

if __name__ == '__main__':
    pytest.main(['-s', 'test_fixture.py'])
复制代码
0
 
posted @   乌醍  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示