Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyTest Django因缺少Django_迁移表而失败_Python_Django_Testing_Database Migration_Pytest - Fatal编程技术网

Python PyTest Django因缺少Django_迁移表而失败

Python PyTest Django因缺少Django_迁移表而失败,python,django,testing,database-migration,pytest,Python,Django,Testing,Database Migration,Pytest,我正在尝试将pytest django添加到当前的pytest3/django 1.7环境中 目前我们还没有使用该插件,并且在某些测试之间一直处于共享状态 一切看起来都很好,测试似乎都通过了,直到最后我收到以下错误消息: request = <SubRequest '_django_db_marker' for <Function 'test_filter_recurring_outside_sync_window'>> @pytest.fixture(auto

我正在尝试将pytest django添加到当前的pytest3/django 1.7环境中

目前我们还没有使用该插件,并且在某些测试之间一直处于共享状态

一切看起来都很好,测试似乎都通过了,直到最后我收到以下错误消息:

request = <SubRequest '_django_db_marker' for <Function 'test_filter_recurring_outside_sync_window'>>

    @pytest.fixture(autouse=True)
    def _django_db_marker(request):
        """Implement the django_db marker, internal to pytest-django.

        This will dynamically request the ``db`` or ``transactional_db``
        fixtures as required by the django_db marker.
        """
        marker = request.keywords.get('django_db', None)
        if marker:
            validate_django_db(marker)
            if marker.transaction:
                getfixturevalue(request, 'transactional_db')
            else:
                getfixturevalue(request, 'db')

ve/lib/python2.7/site-packages/pytest_django/plugin.py:376:


self = <django.db.backends.sqlite3.base.SQLiteCursorWrapper object at 0x11976a478>
query = 'SELECT "django_migrations"."app", "django_migrations"."name" FROM "django_migrations"', params = ()

    def execute(self, query, params=None):
        if params is None:
            return Database.Cursor.execute(self, query)
        query = self.convert_query(query)
>       return Database.Cursor.execute(self, query, params)
E       OperationalError: no such table: django_migrations

ve/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:485: OperationalError
请求=
@pytest.fixture(autouse=True)
def_django_db_标记(请求):
“”“实现django_db标记,pytest django内部。
这将动态地请求``db``或``transactional\u数据库``
django_db标记要求的固定装置。
"""
marker=request.keywords.get('django_db',无)
如果标记:
验证\u django\u数据库(标记)
如果是marker.transaction:
getfixturevalue(请求“事务性数据库”)
其他:
getfixturevalue(请求“db”)
ve/lib/python2.7/site packages/pytest\u django/plugin.py:376:
自我=
query='从“django_迁移”中选择“django_迁移”。“app”,“django_迁移”。“name”,参数=()
def execute(self、query、params=None):
如果params为None:
返回Database.Cursor.execute(self,query)
query=self.convert\u查询(query)
>返回Database.Cursor.execute(self、query、params)
E操作错误:没有这样的表:django_迁移
ve/lib/python2.7/site packages/django/db/backends/sqlite3/base.py:485:OperationalError
我尝试在
conftest.py
中使用
sure\u schema
创建表。 我已经尝试了
--nomigrations
--create db
pytest
的所有选项


我猜这是一个奇怪的配置问题,我有一个遗留系统,但我不知道从哪里开始寻找。有人有什么建议吗?

看起来可能是迁移的问题

运行
/manage.py schemamigration research--auto
显示大多数字段没有指定任何默认值

接下来,运行
/manage.py模式迁移研究--init
,然后运行
/manage.py迁移研究

在我创建表之后,这对我很有用:

python manage.py migrate --run-syncdb
注意:不要忘记首先运行python makemigrations,即
python manage.py makemigrations{患者模型所在应用程序的名称}

有用提示:有一个由
django
生成的表,名为
django\u migrations
,用于跟踪迁移的内容 曾经 应用如果删除了
迁移
,请重新生成迁移并尝试
migrate
不从表中删除记录,然后
django
将 我认为它已经应用了它们。你永远不应该删除你的 迁移,因为这会使django感到困惑

如果您正在积极开发,并且希望跳过整个
迁移,则可以跳过迁移步骤
系统可以,但一旦开始使用
迁移
,就永远不要删除 他们。以下是我在开发新项目时使用的方法:

首先,它删除数据库和所有数据。然后它创建一个空的 一个。
--run syncdb
生成模式,并加载数据 来自一个数据库的数据

因此,如果您仍在开发中,可以删除所有数据并移动 您关心的是一个fixtures文件,然后您可以删除所有 迁移文件夹。然后,每次更改命令时都可以运行上面的命令 模型


您是否尝试过分别为每个应用程序进行makemigrations和migrate?这可能会在您使用类似于
py.test/path/to/django/project--nomigrations--ds=myproject.settings.test的东西时解决您的问题?您正在运行的命令是什么?
dropdb mydb && createdb mydb && python manage.py migrate --run-syncdb && python manage.py loaddata initial