【发布时间】:2014-03-02 06:32:36
【问题描述】:
假设我有一个像下面这样的简单夹具(使用 pytest-django,但它也适用于 pytest):
@pytest.fixture
def my_thing(request, db):
thing = MyModel.objects.create()
request.addfinalizer(lambda: thing.delete())
return thing
当我的测试需要 MyModel 的单个实例时,这非常有用。但是如果我需要两个(或三个或四个)呢?我希望每个实例都是不同的,但要以相同的方式设置。
我可以复制/粘贴代码并重命名fixture函数,但这似乎不太优雅。
同样,我也试过:
@pytest.fixture
def my_thing_1(my_thing):
return my_thing
@pytest.fixture
def my_thing_2(my_thing):
return my_thing
但是,它们中的每一个似乎都返回了相同的 MyModel 实例。
有没有办法使用 pytest 的内置功能来做我想做的事?或者,我可以将我的夹具的设置/拆卸移到辅助函数中,这样我就不会复制太多代码。
还是说我做错了事?
【问题讨论】:
标签: python django testing pytest