我正在使用Python3.7和Django3。我想使用pytest来编写一些单元测试,但是遇到了一个奇怪的配置错误。这里有一个基本的单元测试。。。
import pytest
from django.test import TestCase
from .factories import CoopTypeFactory, CoopFactory, AddressFactory, StateFactory, EmailContactMethodFactory, PhoneContactMethodFactory
from directory.models import Coop, CoopType
from directory.serializers import *
class SerializerTests(TestCase):
@classmethod
def setUpTestData(cls):
#management.call_command('loaddata', 'test_data.yaml', verbosity=0)
pass
@pytest.mark.django_db
def test_coop_type_create(self):
""" Test coop serizlizer model """
name = "Library"
serializer_data = {
"name": name,
}
serializer = CoopTypeSerializer(data=serializer_data)
serializer.is_valid()
print(serializer.errors)
assert serializer.is_valid(), serializer.errors
coop_type = serializer.save()
assert coop_type.name == name
(venv) localhost:tests davea$ pytest test_serializers.py
============================================================= test session starts =============================================================
platform darwin -- Python 3.7.2, pytest-5.4.1, py-1.8.1, pluggy-0.13.1
rootdir: /Users/davea/Documents/workspace/chicommons/maps/web/tests
collected 0 items / 1 error
=================================================================== ERRORS ====================================================================
____________________________________________________ ERROR collecting test_serializers.py _____________________________________________________
test_serializers.py:3: in <module>
from .factories import CoopTypeFactory, CoopFactory, AddressFactory, StateFactory, EmailContactMethodFactory, PhoneContactMethodFactory
factories.py:3: in <module>
from directory.models import CoopType, Coop, ContactMethod
../directory/models.py:5: in <module>
from address.models import Address
../venv/lib/python3.7/site-packages/address/models.py:162: in <module>
class Country(models.Model):
../venv/lib/python3.7/site-packages/django/db/models/base.py:107: in __new__
app_config = apps.get_containing_app_config(module)
../venv/lib/python3.7/site-packages/django/apps/registry.py:252: in get_containing_app_config
self.check_apps_ready()
../venv/lib/python3.7/site-packages/django/apps/registry.py:134: in check_apps_ready
settings.INSTALLED_APPS
../venv/lib/python3.7/site-packages/django/conf/__init__.py:76: in __getattr__
self._setup(name)
../venv/lib/python3.7/site-packages/django/conf/__init__.py:61: in _setup
% (desc, ENVIRONMENT_VARIABLE))
E django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
=========================================================== short test summary info ===========================================================
ERROR test_serializers.py - django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. ...
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
============================================================== 1 error in 0.51s ===============================================================
(venv) localhost:tests davea$
我已经在虚拟环境中运行了。我还需要做什么才能运行pytest?