gpt4 book ai didi

django - Fixtures 不应该被直接调用

转载 作者:行者123 更新时间:2023-12-04 16:44:59 26 4
gpt4 key购买 nike

我正在使用 Django 3.0.5pytest 5.4.1pytest-django 3.9.0。我想创建一个返回 User 对象的 fixture 以在我的测试中使用。这是我的 conftest.py

import pytest
from django.contrib.auth import get_user_model


@pytest.fixture
def create_user(db):
return get_user_model().objects.create_user('user@gmail.com', 'password')

这是我的api_students_tests.py

import pytest
from rest_framework.test import APITestCase, APIClient


class StudentViewTests(APITestCase):

user = None

@pytest.fixture(scope="session")
def setUp(self, create_user):
self.user = create_user

def test_create_student(self):
assert self.user.email == 'user@gmail.com'
# other stuff ...

我不断收到以下错误

Fixture "setUp" called directly. Fixtures are not meant to be called directly,
but are created automatically when test functions request them as parameters.

我读了又读this previous question但我找不到解决办法。此外,在那个问题中,fixture 没有返回任何东西,而在我的例子中,它应该返回一个对象(不知道它是否能产生任何影响)

最佳答案

只需跳过设置:

@pytest.fixture(scope='session')
def create_user(db):
return get_user_model().objects.create_user('user@gmail.com', 'password')


class StudentViewTests(APITestCase):

def test_create_student(self, create_user):
assert user.email == 'user@gmail.com'
# other stuff ...

关于django - Fixtures 不应该被直接调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61794054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com