Как использовать pytest fixtures в одной тестовой функции Django TestCase
Результаты тестирования TypeError: test() missing 1 required positional argument: 'fix'
from django.test import TestCase
import pytest
@pytest.fixture
def fix():
return "x"
class QueryTestCase(TestCase):
def test(self, fix):
print(fix)
Существует почти аналогичный случай, но я хочу, чтобы приспособление использовалось только в этом конкретном тесте, но не в классе
Вы пытаетесь объединить инструменты pytest с unittest в Django.TestCase. Тестовый набор Django несовместим с внедрением инструментов pytest непосредственно в методы тестирования, скорее он полагается на unittest, который не поддерживает подобные инструменты. Если вы хотите использовать прибор pytest только в определенном тесте, вы можете просто использовать тест на основе функций pytest:
import pytest
@pytest.fixture
def fix():
return "x"
def test_with_fix(fix):
print(fix)
Или используйте pytest с классом без наследования от тестового набора Django:
import pytest
@pytest.fixture
def fix():
return "x"
class TestQuery:
def test_with_fix(self, fix):
print(fix)
Если вам необходимо использовать тестовый набор Django, обратите внимание, что вы не можете напрямую использовать pytest fixtures. Вместо этого вы можете использовать self.setUp() или вручную вызвать fixture.
from django.test import TestCase
def fix():
return "x"
class QueryTestCase(TestCase):
def test_something(self):
value = fix()
print(value)
Или используйте @pytest.mark.django_db, если вы тестируете модели без создания подклассов TestCase.