Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

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

This is my first programming question to ask on here. I am also a beginner python programmer.

I’m making a test program in order to test a function from another program (plates). Basically the main program (plates) asks for a string and then checks the string against a bunch of functions to see if the string is valid or not.

This is a small snippet of the test program from the very top:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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

This is the function that I want to test from the main method (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

My tests are coming out like this:

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

All of my "actuals" are reporting "None" instead of the corresponding bools. What am I doing wrong?

The main program definitely works as intended.. I’m just practicing unit tests.
If you know, you know 😉

>Solution :

As already noted by Matthias, when a function ends without explicitly returning something it returns None by default. So your assertions succeed as long as you are checking for True, but fail when you check for False: False != None.

Add a return False to your function, or modify your assertions.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading