如何参数化准备好的数据
How to parametrize prepared data
我需要准备一个具有合适子实体的实体。我需要指定将存储在准备好的父实体中的实体类型。像这样:
@pytest.fixture(element_types)
def entry_type_id(element_types)
elements = [resolve_elements_create(data=element_data(element_type)) for element_type in element_types]
entry_type_id = resolve_entry_type_create(elements)
return entry_type_id
def test_something(entry_type_id([ElementType1, ElementType2])):
...
我无法为每个用例创建一个夹具,因为我需要的组合太多了。有什么方法可以给图片传递参数来自定义准备好的实体吗?
我不完全明白你的终点是什么,但根据你的评论,我认为你应该创建一个测试 class 这样你就可以创建元素然后删除它们,因为你想测试创建+删除条目
@pytest.fixture(scope="class")
def entry_type(request)
element = resolve_elements_create(data=element_data(request.param))
# This should return 0 if Error during creation
return resolve_entry_type_create(element)
后面自己测试
@pytest.mark.parametrize("entry_type", [ElementType1, ElementType2], indirect=True)
class TestEntries:
def test_create_entry(entry_type):
assert entry_type
def test_delete_entry(entry_type):
assert delete_entry(entry_type)
这更像是一个伪代码,需要进行一些更改,但在大多数情况下,在 pytest 中应优先使用固定装置而不是函数。
我需要准备一个具有合适子实体的实体。我需要指定将存储在准备好的父实体中的实体类型。像这样:
@pytest.fixture(element_types)
def entry_type_id(element_types)
elements = [resolve_elements_create(data=element_data(element_type)) for element_type in element_types]
entry_type_id = resolve_entry_type_create(elements)
return entry_type_id
def test_something(entry_type_id([ElementType1, ElementType2])):
...
我无法为每个用例创建一个夹具,因为我需要的组合太多了。有什么方法可以给图片传递参数来自定义准备好的实体吗?
我不完全明白你的终点是什么,但根据你的评论,我认为你应该创建一个测试 class 这样你就可以创建元素然后删除它们,因为你想测试创建+删除条目
@pytest.fixture(scope="class")
def entry_type(request)
element = resolve_elements_create(data=element_data(request.param))
# This should return 0 if Error during creation
return resolve_entry_type_create(element)
后面自己测试
@pytest.mark.parametrize("entry_type", [ElementType1, ElementType2], indirect=True)
class TestEntries:
def test_create_entry(entry_type):
assert entry_type
def test_delete_entry(entry_type):
assert delete_entry(entry_type)
这更像是一个伪代码,需要进行一些更改,但在大多数情况下,在 pytest 中应优先使用固定装置而不是函数。