代码之家  ›  专栏  ›  技术社区  ›  Dave

在虚拟环境中运行pytest时是否需要特殊设置?

  •  0
  • Dave  · 技术社区  · 5 年前

    我正在使用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?

    0 回复  |  直到 5 年前