2016-07-28 13 views
1

Ich bin mit einem Filter zu remove empty values from a list:Wie kann ich einen Filter testen?

def clean_list(inp): 
    return filter(None, inp) 

Wie kann ich Unit-Test dieses Stück Code?

Alle folgenden fehlschlagen, da die Rückkehr von clean_list ist ein Filter Objekt und eine dieser nicht übereinstimmt:

assert clean_list(['']) == [] 
assert clean_list(['']) == [''] 
assert clean_list(['']) == filter(None, ['']) 
assert clean_list(['']) == filter(None, []) 
+2

das Ergebnis in eine Folge Verbrauchen und testen Sie das? – jonrsharpe

+1

** Bestätigungsliste (clean_list ['']) == [] ** – mtadd

+0

@mtadd - jons Kommentar führte mich dazu, aber ich verwende Parametrisierung - Ist dies in einem parametrisierten Kontext möglich? –

Antwort

1

Basierend auf den Kommentaren und Bestätigung von this question, es scheint die beste Lösung ist, den Filter zu "konsumieren". Da ich parametrisierte Tests verwende, ist es die beste Option, dies in der Funktion selbst zu tun und eine einfache Liste zurückzugeben. jetzt

So ist meine clean_list Funktion:

def clean_list(inp): 
    return list(filter(None, inp)) 

und die folgende Einheit Test jetzt passiert:

assert clean_list(['']) == [] 
Verwandte Themen