Как создать подобный метод "setUp" в unittest, используя приспособления pytest и django - PullRequest
2 голосов
/ 04 ноября 2019

У меня есть код ниже в моих тестовых файлах и я пытаюсь его изменить. Я новичок в pytest, и я пытаюсь добиться аналогичного метода setUp, доступного с unittest, чтобы иметь возможность извлекать объект, созданный в БД, в другую функцию вместо повторения кодов.

В этом случае я хочуповторно использовать 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

Буду признателен за помощь.

1 Ответ

3 голосов
/ 04 ноября 2019

Эквивалент 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...