python - 什么时候应该使用 setUpClass 什么时候只使用类成员?

标签 python python-unittest

当使用 Python 的内置单元测试时,至少有 2 种不同的方法来组织类级设置,使用 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()
        ...

最佳答案

事实上,上述问题中的 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

关于python - 什么时候应该使用 setUpClass 什么时候只使用类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52474130/

相关文章:

python side_effect - 方法的模拟行为

python - os.walk() 反过来?

python - 从 pyunit 单元测试生成测试覆盖率信息?

python - 在单元测试 CI 期间模拟单击 PyQt5 QMessageBox 小部件中的按钮

python - 如何使用 Python 包装器安装 GDCM?

python - 如何在Python多模块的覆盖范围中排除目录

unit-testing - 如何对 tornado + async def 进行单元测试?

python - Pandas 时间序列重采样

python - wxpython中的多行复选框

python - 在 Python 中使用 poplib 检查与收件箱不同的文件夹