Когда я должен использовать setUpClass и когда использовать только член класса? - PullRequest
0 голосов
/ 24 сентября 2018

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

class TestFoo(unittest.TestCase):

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

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

VS

class TestFoo(unittest.TestCase):

    foo = Foo(...)

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

1 Ответ

0 голосов
/ 24 сентября 2018

На самом деле, 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

VS

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
...