为什么从模块导入函数后我的测试失败?



这是我在这里问的第一个编程问题。我也是一个初学者python程序员。

我正在做一个测试程序,以测试一个功能从另一个程序(板)。基本上,主程序(plates)请求一个字符串,然后根据一堆函数检查字符串是否有效。

这是测试程序最上面的一小段代码:

from plates import is_valid
def main():
test_length_check()
test_letter_start()
test_punc_check()
test_zero_lead()
test_seq_check()

def test_length_check():
assert is_valid("CS50") == True
assert is_valid("C") == False
assert is_valid("TOOLONGBOI") == False

这是我想从主方法(plates)中测试的函数:

def main():
plate = input("Plate: ")
if is_valid(plate):  # if is_valid == True
print("Valid")
else:
print("Invalid")
# print(arg_list_val)  # If invalid, shows what tests have failed
def is_valid(s):
arg_list_val = [length_check(s), letter_start(s), punc_check(s),
zero_lead(s), seq_check(s)]  # Bool list of all 4 req checks
if all(arg_list_val):  # If and ONLY if all req checks are True
return True

我的测试结果如下:

test_plates.py::test_length_check FAILED                                 [ 20%]
test_plates.py:10 (test_length_check)
None != False
Expected :False
Actual   :None
<Click to see difference>
def test_length_check():
assert is_valid("CS50") == True
>       assert is_valid("C") == False
E       AssertionError: assert None == False
E        +  where None = is_valid('C')
test_plates.py:13: AssertionError

我所有的"实际"都在报告"无"。而不是相应的bool。我做错了什么?

主程序绝对按预期工作。我只是在练习单元测试如果你知道,你知道;)

正如Matthias所指出的,当一个函数结束时没有显式返回某些东西,它默认返回None。因此,只要检查True,断言就会成功,但检查False:False != None时就会失败。

添加一个return False到你的函数,或者修改你的断言。

相关内容

  • 没有找到相关文章

最新更新