如何使用pytest固定装置和Django在unittest中创建类似于“ setUp”方法的方法

我的测试文件中包含以下代码,并尝试对其进行重构。我是pytest的新手,我正在尝试实现与unittest相似的setUp方法,以便能够将在db中创建的对象检索到其他函数,而不必重复代码。

在这种情况下,我想将 month test_setup 复用到其他功能。

test_models.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

我会很感激。

WOJIAXIAOMIAN3 回答:如何使用pytest固定装置和Django在unittest中创建类似于“ setUp”方法的方法

使用固定装置,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
本文链接:https://www.f2er.com/3169461.html

大家都在问