pytest测试框架系列 - pytest 断言assert使用

前言

  • 测试用例的预期结果是用例不可缺少的一部分,那么断言就是自动化测试不可缺少的一步,一个没有断言的用例,自动化测试的就没有意义了。那什么是断言呢?
  • 简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试 failed
  • Pytest里面使用关键字assert,断言为一个表达式,只要表达式的最终结果为True,那么断言通过,用例执行成功,否则用例执行失败

Assert 常用断言方式

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

示例:

# _*_coding:utf-8 _*_
# @Time  :2021/7/2 21:27
# @Author  : king
# @File    :test_assert.py
# @Software  :PyCharm
# @blog     :https://blog.csdn.net/u010454117
# @WeChat Official Account: 【测试开发知识库】
import pytest

def func(a):
    if a > 2:
        return True
    else:
        return False

def test_01():
    """断言xx为真"""
    a = 3
    b = 1
    assert func(a)

def test_02():
    """断言 b 包含 a"""
    a = "king"
    b = "hello king"
    assert a in b

def test_03():
    """断言相等"""
    a = "king"
    b = "king"
    assert a == b

def test_04():
    """断言不等于"""
    a = 1
    b = 2
    assert a != b

if __name__ == "__main__":
    pytest.main()

命令行输入: pytest -s test_assert.py 执行结果如下:
断言示例
注意:用例如果没有断言且运行正常,测试结果为pass

那么断言都能正常进行吗?所以接下来我们讲解一下异常断言

Pytest 异常断言Excepiton

  • 除了支持对代码正常运行的结果断言之外,Pytest也能够对 Exception 和 Warnning 进行断言,来断定某种条件下,一定会出现某种异常或者警告。在功能测试和集成测试中,这两类断言用的不多,这里简单介绍一下。

对于异常的断言,Pytest的语法是:with pytest.raises(异常类型),可以看下面的这个例子:

def test_zero_division():
    with pytest.raises(ZeroDivisionError):
        1 / 0

这个测试用例断言运算表达式1除以0会产生ZeroDivisionError异常。除了对异常类型进行断言,还可以对异常信息进行断言,比如:

# _*_coding:utf-8 _*_
# @Time  :2021/7/2 21:43
# @Author  : king
# @File    :test_except_assert.py
# @Software  :PyCharm
# @blog     :https://blog.csdn.net/u010454117
# @WeChat Official Account: 【测试开发知识库】
import pytest


def test_zero_division():
    """断言异常"""
    with pytest.raises(ZeroDivisionError) as excinfo:
        1 / 0

    # 断言异常类型type
    assert excinfo.type == ZeroDivisionError
    # 断言异常value值
    assert "division by zero" in str(excinfo.value)

命令行输入: pytest -s test_except_assert.py 执行结果如下:
异常信息和类型断言
这个测试用例,就断言了excinfo.value的内容中包含division by zero这个字符串,这在需要断言具体的异常信息时非常有用。

关于更多的Exception和Warnning的断言可以参考Pytest的官方文档:
Exception和Warnning的断言 Pytest的官方文档

我们再来看下下面这个断言失败你发现啥了呢?
断言失败
从这个断言看出来,断言失败提示信息是不是对我们不太友好,不是很明显

优化断言提示信息

def test_assert_fail():
    a = 2
    b = 3
    assert a == b, "判断 a 和 b 是否相等 a:{} b: {}".format(a, b)

命令行输入: pytest -s test_assert_fail.py 执行结果如下:
在这里插入图片描述
以上为内容纯属个人理解,如有不足,欢迎各位大神指正,转载请注明出处!

如果觉得文章不错,欢迎关注微信公众号,微信公众号每天推送相关测试技术文章
个人微信号

您好!对于学习 pytest 测试框架,我可以给您一些简要的介绍和指导。 首先,pytest 是一个功能强大且易于使用Python 测试框架,它可以用于编写和执行各种类型的测试,包括单元测试、集成测试和功能测试等。 以下是一些学习 pytest 的步骤和资源: 1. 安装 pytest:您可以使用 pip 命令来安装 pytest。在命令行中运行以下命令即可: ``` pip install pytest ``` 2. 学习基本语法:pytest 提供了丰富的语法和功能来编写测试用例。您可以开始学习 pytest 的基本语法,例如使用 `assert` 来编写断言使用 `test_` 前缀定义测试函数等。 3. 编写测试用例:在 pytest 中,测试用例是以函数的形式存在的。您可以创建一个 Python 模块,并在其中定义一个或多个测试函数。每个测试函数应该以 `test_` 开头,这样 pytest 才能自动识别并执行它们。 4. 运行测试使用命令行进入到测试用例所在的目录,并执行以下命令来运行测试: ``` pytest ``` pytest 会自动发现并执行所有的测试用例,并输出测试结果。 5. 断言测试覆盖率:pytest 提供了多种断言方法,您可以根据需要选择适合的断言来验证测试结果。此外,还可以使用 pytest-cov 插件来获取测试覆盖率报告,以了解您的测试用例覆盖了哪些代码。 6. 学习更高级的功能:pytest 还提供了许多高级功能,例如参数化测试、夹具(fixtures)、插件系统等。您可以逐步学习和掌握这些功能,以便更好地利用 pytest 进行测试。 除了以上步骤和资源,还有许多书籍、教程和文档可以帮助您深入学习 pytest。以下是一些值得参考的资源: - pytest 官方文档:https://docs.pytest.org/ - "Python Testing with pytest" 一书:https://pragprog.com/titles/bopytest/python-testing-with-pytest/ - pytest 教程:https://www.tutorialspoint.com/pytest/index.htm 希望这些信息能对您学习 pytest 有所帮助!如有任何进一步的问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试之路king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值