как протестировать генератор с помощью unittest?

Я запрограммировал небольшой итератор в 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

, и я хотел бы использовать unittest Python для проверки того, является ли какое-то значение в сгенерированном списке четным (я просто делаю это для обучения модуля тестирования на Python). Поэтому я хотел бы иметь что-то вроде:

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

, но я просто не знаю, как это сделать. Я прочитал некоторые материалы в Интернете, но нет примеров, которые расскажут, как управлять модульным тестом внутри классов.

5 голосов | спросил asgard 20 42014vEurope/Moscow11bEurope/MoscowThu, 20 Nov 2014 00:44:11 +0300 2014, 00:44:11

1 ответ


2

Ниже приведен пример теста. Кстати, у вас есть ошибка в вашем классе. Вероятно, self.i=self.i+i должен быть 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()
ответил rocky 14 J0000006Europe/Moscow 2015, 23:01:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132