• pytest文档9-参数化parametrize


    前言

    pytest.mark.parametrize装饰器可以实现测试用例参数化。

    parametrizing

    1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子

    # content of test_expectation.py
    
    # coding:utf-8
    
    import pytest
    @pytest.mark.parametrize("test_input,expected",
                             [ ("3+5", 8),
                               ("2+4", 6),
                               ("6 * 9", 42),
                             ])
    def test_eval(test_input, expected):
        assert eval(test_input) == expected
    
    if __name__ == "__main__":
        pytest.main(["-s", "test_canshu1.py"])
    
    

    运行结果

    
    ================================== FAILURES ===================================
    _____________________________ test_eval[6 * 9-42] _____________________________
    
    test_input = '6 * 9', expected = 42
    
        @pytest.mark.parametrize("test_input,expected",
                                 [ ("3+5", 8),
                                   ("2+4", 6),
                                   ("6 * 9", 42),
                                 ])
        def test_eval(test_input, expected):
    >       assert eval(test_input) == expected
    E       AssertionError: assert 54 == 42
    E        +  where 54 = eval('6 * 9')
    
    test_canshu1.py:11: AssertionError
    ===================== 1 failed, 2 passed in 1.98 seconds ======================
    

    在这个例子中设计的,只有一条输入/输出值的简单测试功能。和往常一样

    函数的参数,你可以在运行结果看到在输入和输出值

    2.它也可以标记单个测试实例在参数化,例如使用内置的mark.xfail

    # content of test_expectation.py
    import pytest
    @pytest.mark.parametrize("test_input,expected", [
                            ("3+5", 8),
                            ("2+4", 6),
                            pytest.param("6 * 9", 42, marks=pytest.mark.xfail),
                            ])
    def test_eval(test_input, expected):
        print("-------开始用例------")
        assert eval(test_input) == expected
    
    
    
    if __name__ == "__main__":
        pytest.main(["-s", "test_canshu1.py"])
    

    运行结果:

    test_canshu1.py -------开始用例------
    .-------开始用例------
    .-------开始用例------
    x
    
    ===================== 2 passed, 1 xfailed in 1.84 seconds =====================
    

    标记为失败的用例,预期结果是失败,实际运行也是失败,显示xfailed

    参数组合

    1.若要获得多个参数化参数的所有组合,可以堆叠参数化装饰器

    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_canshu1.py"])
    

    运行结果

    
    test_canshu1.py 测试数据组合:x->0, y->2
    .测试数据组合:x->1, y->2
    .测试数据组合:x->0, y->3
    .测试数据组合:x->1, y->3
    .
    
    ========================== 4 passed in 1.75 seconds ===========================
    

    这将运行测试,参数设置为x=0/y=2,x=1/y=2,x=0/y=3,x=1/y=3组合参数。

    ---------------------------------pytest结合selenium自动化完整版-------------------------

    全书购买地址 https://yuedu.baidu.com/ebook/902224ab27fff705cc1755270722192e4536582b

    作者:上海-悠悠 QQ交流群:874033608

    也可以关注下我的个人公众号:yoyoketang

  • 相关阅读:
    4月19日 疯狂猜成语-----第五次站立会议 参会人员:杨霏,袁雪,胡潇丹,郭林林,尹亚男,赵静娜
    prototype
    angularJs scope的简单模拟
    angularjs DI简单模拟
    洗牌算法
    深入探索 TCP TIME-WAIT
    Logitech k480 蓝牙键盘连接 ubuntu 系统
    在 centos6 上安装 LAMP
    vlc 播放器的点播和广播服务
    Linux 文件系统及 ext2 文件系统
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/9455276.html
Copyright © 2020-2023  润新知