为什么我的单元测试返回错误的布尔值时,我的功能应该工作?



我的程序应该顺时针返回用户输入的罗盘点

当我使用print测试我的函数时,它返回了一个false值,而它应该是true。

def turn_clockwise(x):
    if x == 'N':
        print('E')
    elif x == 'E':
        print('S')
    elif x == 'S':
        print('W')
    elif x == 'W':
        print('N')
    else:
        print('Input is not a compass point.')
user_input = input('Enter a compass point: ')
turn_clockwise(user_input)
print(turn_clockwise('N')=='E')

最后一个print函数测试答案是真还是假。虽然第一次调用函数返回'E',但测试结果为false。以下是我输入'N'后打印到终端的内容:

Enter a compass point: N
E
E
False

我也尝试用!=替换==,它返回预期的答案,这是真的。

输出甚至在返回布尔值之前打印出函数的答案。

您混淆了返回值和打印语句。
当您打印一个值时,它只是将它显示在屏幕上,而不是从函数中返回它。
如果你想在打印的同时返回它,你需要在你需要的地方添加一个return语句。

布尔值为false的原因是在没有return语句的情况下,函数返回NoneNone != 'E'

def turn_clockwise(x):
    if x == 'N':
        print('E')
        return 'E'
    elif x == 'E':
        print('S')
        return 'S'
    elif x == 'S':
        print('W')
        return 'W'
    elif x == 'W':
        print('N')
        return 'N'
    else:
        print('Input is not a compass point.')

最新更新