【发布时间】:2020-10-02 16:30:56
【问题描述】:
所以我有一个巨大的对象,其中包含在夹具内部启动的信息。我需要使用这些信息来运行我的测试,这里开始棘手的部分。 如果我在测试用例中使用的对象中没有属性,我必须跳过它。
在测试运行之前(通常),生成对象的夹具被启动一次。 在测试之前,我需要一个易于使用的装饰器/夹具/任何东西来检查对象是否在对象内部具有所需的东西。
例子:
@pytest.fixture(scope="package")
def info(request):
print("Setting up...")
obj = Creator()
obj.setup()
obj.prepare() if hasattr(obj, "prepare") else ""
def teardown():
obj.teardown() if hasattr(obj, "teardown") else ""
request.addfinalizer(teardown)
return obj.call()
...
@has_attr("some_attr")
def test_sometest(info):
assert info.some_attr == 42
【问题讨论】:
-
嘿!我想知道您是否将一个夹具用于各种测试,这些测试可以划分为使用多个专门定制的夹具的测试。有什么想法吗?
-
这个想法是夹具可以灵活地跨测试重用。因此,一般来说,当测试人员编写新测试时,他可以确保 info 对象具有所需的一切。在某些情况下,info 对象会丢失一个 attr,这是正常的。测试基于对象中的值,而不是对象是否有这个和那个。
标签: python-3.x testing pytest python-3.8