pytest学习和使用5-Pytest和Unittest中的断言如何使用?
2023-03-07 09:03:23 时间
1 说明
- pytest中使用assert进行断言,和unittest是有区别的,后边详细列举;
- pytest中的assert后可以为表达式,为True表示用例通过。
2 Uinttest中的断言
2.1 部分断言
- 我们写一个class,代码中就可以看到所有的断言:
在这里插入图片描述 - 常用断言:
2.2 部分举例
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2021/11/26
# 文件名称:test_unint.py
# 作用:unittest断言
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson
import unittest
class TestU(unittest.TestCase):
def setUp(self) -> None:
self.a = 3
self.b = 4
self.c = 3
self.d = 0
def tearDown(self) -> None:
pass
def test_o(self):
self.assertTrue(self.c, msg="结果为False")
def test_t(self):
self.assertEqual(self.a, self.c, msg="a和c不相等")
if __name__ == "__main__":
unittest.main()
3 Pytest断言
3.1 常用断言
断言 | 说明 |
---|---|
assert a | 判断 a为真 |
assert not a | 判断 a不为真 |
assert a in b | 判断 b 包含 a |
assert a == b | 判断 a 等于 b |
assert a != b | 判断 a 不等于 b |
3.2 表示方法
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2021/11/26
# 文件名称:test_assert.py
# 作用:assert断言
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson
import pytest
class TestU():
def test_f(self):
a = 3
b = 4
s = a + b
return s
def test_func(self):
assert self.test_f() == 7, "计算结果不是7"
if __name__ == "__main__":
pytest.main()
- 输出为:
(venv) F:\pytest_study\test_case\test_d>pytest test_assert.py
============================================ test session starts =============================================
platform win32 -- Python 3.7.0, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: F:\pytest_study\test_case\test_d
plugins: allure-pytest-2.8.12, cov-2.8.1, forked-1.1.3, html-2.0.1, metadata-1.8.0, ordering-0.6, xdist-1.31.0
collected 2 items
test_assert.py .. [100%]
============================================= 2 passed in 0.31s ==============================================
3.3 异常断言
- 可以使用 pytest.raises 作为上下文管理器,当抛出异常时可以获取到对应的异常实例;
- 目的是断言抛出的异常是不是预期想要的;
- 比如如下,断言
1 / 0
的异常是不是ZeroDivisionError
,其中ZeroDivisionError
是异常类型,用type
从异常信息中获取;division by zero
是异常的值,使用value
从异常信息中获取。
def test_a(self):
with pytest.raises(ZeroDivisionError) as e:
1 / 0
assert e.type == ZeroDivisionError
assert "division by zero" in str(e.value)
相关文章
- 用 Redux 做状态管理,真的很简单!
- 新设计新界面!Windows 11全新任务管理器上手
- 微软将 Beta 预览通道一分为二,推送 22621.290 和 22622.290 版 Windows 11 更新
- Nest.js 用了 Express 但也没完全用,那怎么办?
- Windows 11更新:全新任务管理器 界面大变
- Windows 11未来或要求使用SSD 微软正积极推动
- 基于Prometheus的分布式监控平台落地与实践
- GNOME 43 中 Nautilus 文件管理器的六个新变化
- 从零开发可视化大屏制作平台
- 彻底搞懂 npm、yarn 与 pnpm 依赖管理逻辑
- 一份不可多得的 TypeScript 学习笔记
- 数据分析平台Chartio关闭了,有什么替代方案么?
- 让我们一起学习源码 Axios
- 2022年值得推荐的五个低代码开发平台
- 如何阻止开发者重复发明轮子?
- ES6 新增数据结构,太强了,值得学习
- 面试官:说说Casbin配置文件里的设计哲学(配置详解)
- 手把手教你使用PySimpleGUI库打造一款轻量级计算器
- IOS 大裁员,一半来自 BAT 大厂开发。
- 免费午餐定理(NFL)的绝妙比喻