Является ли набор тестов устаревшим в PyUnit? - PullRequest
2 голосов
/ 26 июня 2010

Следуя примеру в PyUnit, я придумал следующий код unittest, который отлично работает.

import unittest

class Board:
  def __init__(self, x, y):
    self.x = x; self.y = y;
  def __eq__(self, other):
      return self.x == other.x and self.y == other.y

class BoardTest(unittest.TestCase):
    def setUp(self):
        self.b10_10 = Board(10,10)
        self.b10_10p = Board(10,10)
        self.b10_20 = Board(10,20)
    def tearDown(self):
        pass
    def test1(self):
        self.assert_(self.b10_10 == self.b10_10p)
    def test2(self):
        self.assert_(not (self.b10_10 == self.b10_20))

class BoardTest2(unittest.TestCase):
    def setUp(self):
        self.b10_10 = Board(10,10)
        self.b10_10p = Board(10,10)
        self.b10_20 = Board(10,20)
    def tearDown(self):
        pass
    def test1(self):
        self.assert_(self.b10_10 == self.b10_10p)
    def test2(self):
        self.assert_(not (self.b10_10 == self.b10_20))

def suite():
    suite1 = unittest.makeSuite(BoardTest)
    suite2 = unittest.makeSuite(BoardTest2)
    return unittest.TestSuite((suite1, suite2))

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

Но дело в том, что даже если я удалю

def suite():
, результат будет таким же. Другими словами, похоже, что прибор / комплект не бесполезен с PyUnit.

Это правильно?

Ответы [ 2 ]

4 голосов
/ 29 июня 2010

unittest.TestSuite не требуется, если вы хотите запустить все тесты в одном модуле, поскольку unittest.main () будет динамически проверять вызываемый модуль и находить все классы, производные от unittest.TestCase

Однако класс TestSuite по-прежнему удобен в ряде сценариев:

  1. Вы хотите построить набор логических групп тестов. Например, набор модульных тестов, интеграционных тестов, тестов для конкретной подсистемы и т. Д.
  2. Вы тестируете несколько модулей / пакетов. В этом случае полезно иметь один скрипт, который вы можете запустить, выполнить все ваши тесты. Это может быть достигнуто путем создания набора всех ваших тестов. Обратите внимание, что это становится неактуальным с такими библиотеками, как discovery .
3 голосов
/ 10 сентября 2011

В дополнение к ответу Марка, еще одна причина для создания собственного набора () - это если вы динамически создаете тесты.

Кроме того, мне потребовалось некоторое время, чтобы понять, как заставить PyDev подобрать пакет и запустить его в графическом средстве тестирования.Хитрость заключается в том, чтобы добавить метод, подобный следующему:

def load_tests(loader, tests, pattern):
    return suite()

Такой метод выбирается графическим исполнителем тестов.

...