zoukankan      html  css  js  c++  java
  • 【pytest】3.assert断言

    断言就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试 failed。断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。

    1、使用assert语句进行断言

    1、pytest允许您使用标准的Python断言来验证Python测试中的期望和值。例如:

    # content of test_assert1.py
    def f():
        return 3
    def test_function():
        assert f() == 4
    

    运行会看到断言失败,因为返回的值是3,判断等于4,所以失败了。

    2、指定断言失败的返回消息:

    assert a % 2 == 0, "判断a为偶数,当前a的值为:%s"%a
    

    这样将不会输出内省信息(断言失败对比信息),而是在traceback中输出指定的断言失败返回信息

    2、异常断言

    使用pytest.raises作为上下文管理器,来对【抛出的异常】作断言:

    # content of test_assert1.py
    import pytest
    def test_zero_division():
        with pytest.raises(ZeroDivisionError):
            1 / 0
    

    如果要断言它抛的异常是不是预期的,如执行:1/0,预期结果是抛出异常ZeroDivisionError: division by zero。要断言这个异常,通常是断言异常的type和value值。

    这里的异常类型是ZeroDivisionError,异常value值是division by zero,于是用例可以这样设计:

    # content of test_assert1.py
    import pytest
    def test_zero_division():
        with pytest.raises(ZeroDivisionError) as excinfo:
            1 / 0
        assert excinfo.type == ZeroDivisionError  # 断言异常类型type
        assert "division by zero" in str(excinfo.value)  # 断言异常value值
    

    excinfo 是一个异常信息实例,里面包含了异常的详细信息。主要属性有:.type、 .value 和 .traceback。注意:断言type的时候,异常类型是不需要加引号的,断言value值的时候需转str。

    在上下文管理器中,可以使用参数message来指定自定义失败消息:

    >>> with raises(ZeroDivisionError,message="Expecting ZeroDivisionError"):
    ...     pass
    ... Failed: Expecting ZeroDivisionError
    

    3、常用断言

    pytest里面断言实际上就是python里面的assert断言方法,常用的有以下几种:

    • assert xx 判断xx为真
    • assert not xx 判断xx不为真
    • assert a in b 判断b包含a
    • assert a == b 判断a等于b
    • assert a != b 判断a不等于b
  • 相关阅读:
    如何在调试PHP代码时不显示错误信息
    如何实现网页组件的随意拖拽
    如何做一个简易的HTML代码编辑器
    如何在网页中动态显示时间
    Luogu2577 | [ZJOI2005]午餐 (贪心+DP)
    Luogu2345 | 奶牛集会 (树状数组)
    解决NahimicSvc32.exe与bilibili直播姬的音频不兼容的问题
    STL函数 lower_bound 和 upper_bound 在算法竞赛中的用法
    电子取证 | 第三届美亚杯(2017)个人赛题解
    快速安装字体.bat批处理脚本
  • 原文地址:https://www.cnblogs.com/mind18/p/15621294.html
Copyright © 2011-2022 走看看