python - 为什么我在这段 Python 代码上遇到断言错误?

标签 python function python-3.x assert

我在这里写了一个函数:

def addItem(aBookcase, name, mediaType):
    """
    Returns False if aBookcase is full, otherwise returns True and 
    adds item of given name and mediaType to aBookcase.
    """
    pass
    emptySpacesBefore = aBookcase.getEmptySpaces()
    if aBookcase.getEmptySpaces() == 0:
        added = False
        return added
    else:
        position = findSpace(aBookcase)
        aBookcase.setName(*position, name=name)
        aBookcase.setType(*position, mediaType=mediaType)
        added = True
        emptySpacesAfter = aBookcase.getEmptySpaces()
    assert added is True, "No free positions"
    assert emptySpacesAfter < emptySpacesBefore, "Same amount of empty spaces"
    assert aBookcase.getName(*position) is name, "Error with name"
    assert aBookcase.getType(*position) is mediaType, "Error with media type"

但是当我用这行代码测试该功能时:

assert addItem(small, "Algorhythms, date structures and compatibility", BOOK)

我收到“AssertionError”,如下所示:

Screenshot of 'AssertionError'

所以,如果我是对的,这意味着我没有处理它,但我不确定如何或为什么?我的代码有问题吗?缺少什么吗?等等

最佳答案

当它正常工作时,您的 addItem 函数不会返回任何内容,因此它返回 None,这被最后一个 assert 视为失败您插入的声明。对于这两种情况(TrueFalse),您都应该返回 added

顺便说一句,自从您到达该行后,这意味着之前的所有断言都正常,所以好消息:您的代码正常。

关于python - 为什么我在这段 Python 代码上遇到断言错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40898165/

相关文章:

python - 有没有办法将上下文管理器中的源代码作为字符串获取?

python - python中的多元曲线拟合用于估计椭圆形状的参数和阶数

python - C 中的简单 Python 扩展

Python 编织列表

python - 在某个类的 python 中获取 __init__ def 中的变量

python - 无法将 azure.cognitiveservices.speech 作为 python 中的peechsdk 导入(Azure 函数)错误(段错误(核心转储))

python - 双重递归背后的概念

python - Flask SQLAlchemy - 仅为当前 session 设置 expire_on_commit=False

function - 为什么要如此冗长地声明一个函数?

python - 无法从列表中删除项目