come testare un generatore con unittest?

6

Ho programmato un piccolo iteratore in Python:

class anything():
    def __init__(self):
        self.i=1

    def __iter__(self):
        return self

    def next(self):
        if self.i>100:
            raise StopIteration
        self.i=self.i+1
        return self.i

e vorrei usare l'unittest di Python per verificare se qualche valore sull'elenco generato è pari (lo sto facendo solo per l'apprendimento dell'unità di test in Python). Quindi mi piacerebbe avere qualcosa di simile:

def main()
   for x in anything():
        assert x%2==0

ma non so come farlo. Ho letto del materiale online, ma non ci sono esempi che insegnino come gestire il test unitario all'interno delle classi.

    
posta asgard 19.11.2014 - 22:44
fonte

1 risposta

2

Di seguito è riportato un esempio di test. A proposito, hai un bug nella tua classe. Probabilmente self.i=self.i+i dovrebbe essere self.i=self.i+1

#!/usr/bin/env python
# -*- Python -*-
"Unit test for Columnize"
import unittest
from it import anything

class TestI(unittest.TestCase):

    def test_basic(self):
        for x in anything():
            if x % 2 == 0:
                self.assertTrue(True, "Found value %d" % x)
                return
        self.assertTrue(False, "No even found in Anything")


if __name__ == '__main__':
    unittest.main()
    
risposta data 14.06.2015 - 22:01
fonte

Leggi altre domande sui tag