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号