pytest学习11-assert断言
前言:
断言是写自动化测试脚本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。 什么是断言呢?
简单来讲就是实际结果和期望结果去对比,符合预期那就是测试pass,不符合预期那就测试failed
-assert
pytest允许你使用标准python断言来验证Python测试中的期望和实际计算值。例如你可以写下:
def f():
    return 3
def test_function():
    assert f() == 4
断言f() 函数的返回值,接下来会看到断言失败,因为返回的值是3,判断等于4,所以失败了;从报错信息看,断言失败的原因:3!=4。

异常信息:
接下来再看一个案例,如果想要在异常的时候,输出一些提示信息,这样报错后,就方便查看是什么原因了,assert后面跟上提示信息。
def f():
    return 3
def test_function():
    a = f()
    assert a % 2 == 0, "判断a为偶数,当前a的值为:%s"%a
运行结果:------这样当断言失败的时候,会给写出 自己写上的失败的原因:判断a为偶数,当前a的值为:3

异常断言:
在测试过程中,对于某些方法进行测试时,预测输入某些特定的数据,会抛出特定的异常,若出现特定的异常,则用例执行通过
为了写关于引发异常的断言,可以使用pytest.raises 作为上下文管理器,如下:
def test_zero_division():
    with pytest.raises(ZeroDivisionError):
        1/0
运行结果:

如果我们要断言它抛出的异常是不是预期的,比如执行:1/0,预期结果是抛异常: ZeroDivisionError:division by 0,那我们要断言这个异常,通常是断言异常的type和value值了
这里1/0的异常类型是ZeroDivisionError,异常的value值是division by zero,用例可以如下设计:
def test_zero_division():
    with pytest.raises(ZeroDivisionError) as excinfo:
        1/0
    assert excinfo.type == ZeroDivisionError
    assert "division by zero" in str(excinfo.value)
常用断言:
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
# !/usr/bin/env python
# -*-coding:utf-8 -*-
"""
# File       : test_assert.py
# Time       :2021/11/21 14:30
# Author     :author Kong_hua_sheng_25304
# version    :python 3.8
# Description:
"""
import pytest
def f():
    return 3
def test_function():
    a = f()
    assert a % 2 == 0, "判断a为偶数,当前a的值为:%s"%a
def test_zero_division():
    with pytest.raises(ZeroDivisionError) as excinfo:
        1/0
    assert excinfo.type == ZeroDivisionError
    assert "division by zero" in str(excinfo.value)
def is_true(a):
    if a>0:
        return True
    else:
        return False
def test_01():
    """
    断言 xx为真
    :return:
    """
    a =5
    b = -1
    assert is_true(a)
    assert not is_true(b)
def test_02():
    """
    断言b包含a
    :return:
    """
    a = "hello"
    b= "hellqo world"
    assert a in b,"判断b是否包含a,a= %s b = %s "
def test_03():
    """
    断言相等
    :return:
    """
    a = "yoyo"
    b = "yoyo"
    assert a ==b
def test_04():
    """
    断言不相等
    :return:
    """
    a = 5
    b = 6
    assert a!=b
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号