如何参数化准备好的数据

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 中应优先使用固定装置而不是函数。