como testar um gerador com unittest?

6

Eu programei um pequeno iterador em 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 gostaria de usar o unittest do Python para verificar se algum valor na lista gerada é par (estou apenas fazendo isso para aprender a unidade de teste em Python). Então eu gostaria de ter algo como:

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

mas eu simplesmente não sei como conseguir isso. Eu li algum material on-line, mas não há exemplos que ensinam como gerenciar o teste de unidade dentro das classes.

    
por asgard 19.11.2014 / 22:44
fonte

1 resposta

2

Abaixo está um exemplo de um teste. BTW, você tem um bug na sua aula. Provavelmente self.i=self.i+i deve ser 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()
    
por 14.06.2015 / 22:01
fonte