ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-pytest学习(八)-assert断言

2020-05-05 11:58:27  阅读:264  来源: 互联网

标签:断言 python assert pytest test 异常 def


一、前言

  断言是自动化测试基本最重要的一步,一个用例没有断言,就等于失去自动化测试的意义了。什么是断言呢?

  简单来讲就是实际结果和期望结果去对比,符合预期就测试pass,不符合预期结果就测试failed

二、assert

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

def f():
    return 3

def test_function():
    assert f()==4

运行结果:

 

 从报错信息可以看到断言失败原因:E assert 3 == 4

 

三、异常信息

  接下来再看一个案例,如果想在异常的时候,输出一些提示信息,这样报错后就知道什么原因了

def f():
    return 3

def test_function():
    a=f()
    assert a%2==0,"判断a为偶数,当前a的值为:%s"%a

运行结果:

  这样当断言失败的时候,会给出自己写的失败原因了

  E AssertionError: 判断a为偶数,当前a的值为:3

 

四、异常断言

  为了写关于引发异常的断言,可以使用pytest.raises作为上下文管理器,如下

import pytest

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

运行结果:

 

 

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

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

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)

  excinfo是一个异常信息实例,它是围绕实际引发的异常的包装器。主要属性是.type、.value和.traceback

 

五、常用断言

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

  1.assert xx判断xx为真

  2.assert not xx判断xx不为真

  3.assert a in b 判断b包含a

  4.assert a == b 判断a等于b

  5.assert a != b 判断a不等于b

import pytest

def is_true(a):
    if a>0:
        return True
    else:
        return False

def test_01():
    """断言xx为真"""
    a = 5
    b = -1
    assert is_true(a)
    assert not is_true(b) # 一个用例可以支持多个断言

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

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

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

if __name__ == "__main__":
    pytest.main(["-s","test_assert4.py"])

 

参考文章:https://www.jianshu.com/p/983412a7c2ae

 

标签:断言,python,assert,pytest,test,异常,def
来源: https://www.cnblogs.com/zhaocbbb/p/12830049.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有