我的测试文件中有以下代码并试图重构它。我是 pytest 的新手,我正在尝试实现 unittest 可用的类似方法 setUp,以便能够将数据库中创建的对象检索到其他函数,而不是重复代码。
在这种情况下,我想将 test_setup 中的 month 重新用于其他函数。
测试模型.py
@pytest.mark.django_db
class TestMonth:
# def test_setup(self):
# month = Month.objects.create(name="january", slug="january")
# month.save()
def test_month_model_save(self):
month = Month.objects.create(name="january", slug="january")
month.save()
assert month.name == "january"
assert month.name == month.slug
def test_month_get_absolute_url(self, client):
month = Month.objects.create(name="january", slug="january")
month.save()
response = client.get(reverse('core:month_detail', kwargs={'slug': month.slug}))
assert response.status_code == 200
我将不胜感激。
请您参考如下方法:
pytest 等价物是这样的,使用固定装置:
import pytest
@pytest.fixture
def month(self):
obj = Month.objects.create(name="january", slug="january")
obj.save()
# everything before the "yield" is like setUp
yield obj
# everything after the "yield" is like tearDown
def test_month_model_save(month):
assert month.name == "january"
assert month.name == month.slug
def test_month_get_absolute_url(month, client):
response = client.get(reverse('core:month_detail', kwargs={'slug': month.slug}))
assert response.status_code == 200
