Pytest编写测试时,传递测试失败的信息,则可以直接使用Python自带的assert关键字
Pytest允许在assert关键字后面添加任何表达式,如果bool转换等于False,则意味着失败,pytest有一个重要的功能是可以重写assert关键字,pytest可以截断assert替换为pytest提供的assert,
举例如下:
from collections import namedtuple
import pytest
import time
#clooections 是Python内建的一个集合模块,提供了许多有用的集合类
Task = namedtuple('task',['summary','owner','done','id'])
# 使用__new__.default__创建默认的Task对象,不需要指定所有的属性
Task.__new__.__defaults__ = (None,None,False,None)
def test_asdict():
t_task = Task('do somehing','okken',True,21)
print(type(t_task),t_task)
#返回一个将字段类型映射到其值的新dict
t_dict = t_task._asdict()
expected = {'summary':'do somehing',
'owner':'okken',
'done':True,
'id':21}
assert t_dict == expected
@pytest.mark.run_these_please
def test_replace():
time.sleep(2)
t_before = Task('finish book','brian',False)
print(t_before)
# __replace 返回一个新的命名元祖对象,用新值替换指定的字段
t_after = t_before._replace(id =10,done = True)
t_expected = Task('finish book','brian',True,11)
assert t_after == t_expected
使用原有的assert
image.png
使用pytest的assert
image.png
网友评论