簡體   English   中英

為什么從模塊導入函數后我的測試失敗了?

[英]Why are my tests failing after importing a function from a module?

這是我在這里提出的第一個編程問題。 我也是一個初學者的python程序員。

我正在制作一個測試程序以測試另一個程序(板)的功能。 基本上,主程序(板塊)要求一個字符串,然后根據一堆函數檢查該字符串以查看該字符串是否有效。

這是最上面的測試程序的一小段:

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

這是我想從主要方法(板塊)測試的功能:

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

我所有的“實際值”都報告“無”而不是相應的布爾值。 我究竟做錯了什么?

主程序肯定按預期工作。我只是在練習單元測試。 如果你知道,你就知道;)

正如 Matthias 已經指出的,當一個函數結束時沒有顯式返回一些東西,它默認返回None 因此,只要您檢查True ,您的斷言就會成功,但是當您檢查False時斷言會失敗: False != None

return False添加到您的函數,或修改您的斷言。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM