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