Когда я должен использовать setUpClass и когда использовать только член класса?

1

При использовании встроенного unittest Python существует как минимум два разных способа организовать настройки уровня класса, используя setUpClass() или просто использовать члена класса старой школы. Когда использовать один, а когда другой?

class TestFoo(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.foo = Foo(...)

    def test_blah(self):
        self.foo.do_something()
        ...

В.С.

class TestFoo(unittest.TestCase):

    foo = Foo(...)

    def test_blah(self):
        self.foo.do_something()
        ...
Теги:
python-unittest

1 ответ

-1

Фактически, 2 фрагмента в вышеприведенном вопросе работают в основном одинаково, за исключением случаев, когда вы собираетесь использовать декоратор @skipUnless(condition).

SETTINGS = json.load(...)

@unittest.skipUnless("foo" in SETTINGS, "skipped")
class TestFoo(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.foo = Foo(SETTINGS["foo"])
# If SETTINGS["foo"] is undefined,
# this entire test class would be skipped

В.С.

SETTINGS = json.load(...)

@unittest.skipUnless("foo" in SETTINGS, "skipped")
class TestFoo(unittest.TestCase):

    foo = Foo(SETTINGS["foo"])
# This line will always be executed,
# BEFORE the skipUnless(...),
# so if SETTINGS["foo"] is undefined,
# there will be a runtime error here
  • 1
    setUpClass также является процедурным и может делать больше, чем просто назначать атрибуты класса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню