Вопрос

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

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.

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

Это было полезно?

Решение

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

Однако класс Testsuite все еще удобно в ряде сценариев:

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top