2017-05-13 32 views
11

Więc chcę zrobić ten kod Kata dla praktyki. chcę wdrożyć kata z TDD w oddzielnych plikach:Python unittest - Ran 0 testów w 0.000s

Algorytm:

# stringcalculator.py 
def Add(string): 
    return 1 

i badań:

# stringcalculator.spec.py 
from stringcalculator import Add 
import unittest 

class TestStringCalculator(unittest.TestCase): 
    def add_returns_zero_for_emptyString(self): 
     self.assertEqual(Add(' '), 0) 

if __name__ == '__main__': 
    unittest.main() 

Po uruchomieniu testfile, uzyskać:

Ran 0 tests in 0.000s 

OK 

Należy jednak zwrócić jeden nieudany test. Czego tu brakuje?

+4

Jestem pewien, że potrzebujesz 'test' gdzieś w nazwie metody. –

+1

Metody 'TestCase', które należy uruchomić, muszą rozpoczynać się od' 'test''! – schwobaseggl

+0

Tak! Dziwne, nie wiedziałem o tym ograniczeniu. Dziękuję życzliwym panom. – MattSom

Odpowiedz

10

Jak stwierdzono w Pythonie unittest doc:

Najprostszym TestCase podklasa po prostu zaimplementować metody badawczej (czyli metodę, którego nazwa zaczyna się od testu)

Więc trzeba będzie zmień nazwę swojej metody na coś podobnego:

def test_add_returns_zero_for_emptyString(self): 
    self.assertEqual(Add(' '), 0) 
5

Strona poprzednia: Również nazwa pliku w którym wszystkie testy tam są powinny zaczynać się od "test_"

+0

Masz na myśli konwencję? – MattSom

+1

Dla celów konwencyjnych tak, a także jeśli używasz narzędzi takich jak ** nose ** do uruchamiania testów jednostkowych. Jeśli nazwa pliku zaczyna się od "test_", dopiero wtedy nos może odkryć testy w nim i je uruchomić. – Shashank