前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytest学习(二) - 断言的使用

Pytest学习(二) - 断言的使用

作者头像
软件测试君
发布2020-10-29 10:07:32
4580
发布2020-10-29 10:07:32
举报
文章被收录于专栏:测试人生测试人生

本文共835字 阅读约需2分钟

一、前言

学习pytest时,总会习惯性的和unittest对比使用,自然就断言pytest和unittest也是有些区别的。

二、断言对比

unittest 断言
代码语言:javascript
复制
assertEqual(a, b)     # 判断a和b是否相等

assertNotEqual(a, b)     # 判断a不等于b

assertTrue(a)    # 判断a是否为Ture

assertFalse(a)    #判断a是否为False

assertIn(a, b)     # a 包含在b里面

asserNotIn(a, b)    # a 不包含在b里面
pytest 断言

pytest只需要用assert来断言就行,相对更简单而便捷

代码语言:javascript
复制
assert xx :判断 xx 为真
assert not xx :判断 xx 不为真
assert a in b :判断 b 包含 a
assert a == b :判断 a 等于 b
assert a != b :判断 a 不等于 b

三、pytest示例代码

代码语言:javascript
复制
# -*- coding: utf-8 -*-
# @Time    : 2020/10/20 19:37
# @Author  : longrong.lang
# @FileName: test_assert.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
def f():
    return 5;


def test_f():
    n = f()
    assert n % 3 == 0, "判断n 是否能被3整除,当前 n 的值为:%s" % n

四、执行结果

五、异常断言

结合pytest 断言特点和《Pytest之使用断言指定异常》,再来一个异常的案例,比如除数不能为零,示例代码如下:

代码语言:javascript
复制
# 异常断言
# 异常断言
def test_zero_division():
    with pytest.raises(ZeroDivisionError) as exceptionInfo:
        100 / 0
    # 断言异常类型
    assert exceptionInfo.type == ZeroDivisionError
    # 断言异常的值
    assert "division by zero" in str(exceptionInfo.value)

知识点:

使用pytest.raises,来捕获对应的异常示例,exceptionInfo为一个对象示例来接收属性信息,通常是断言异常的 type 和 value 值

1、使用match断言
  • match 关键字是测试正则表达式与异常的字符串表示形式是否匹配
  • 这种方法只能断言value,不能断言类型

示例代码如下:

代码语言:javascript
复制
# match的使用
def test_zero_division_match():
    with pytest.raises(ZeroDivisionError, match=".*zero.*") as exceptionInfo:
        100 / 0
    # 也可以这样
    with pytest.raises(ZeroDivisionError, match="zero") as exceptionInfo:
        100 / 0

match 方法的regexp参数与 re.search 函数匹配,因此在上面的示例中 match='zero' 也可以使用

2、检查断言装饰器使用

示例代码如下:

代码语言:javascript
复制
# 断言装饰器
@pytest.mark.xfail(raises=ZeroDivisionError)
def test_f():
    1 / 0

个人觉得这个断言装饰器,和java的注解类似,相对更轻量快捷

3、执行结果
小结

装饰器这部分还没学习,后续继续更新,先放一放!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、断言对比
    • unittest 断言
      • pytest 断言
      • 三、pytest示例代码
      • 四、执行结果
      • 五、异常断言
        • 知识点:
          • 1、使用match断言
            • 2、检查断言装饰器使用
              • 3、执行结果
                • 小结
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档