Django 单元测试报错没有创建数据表

Posted ponponon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 单元测试报错没有创建数据表相关的知识,希望对你有一定的参考价值。

报错描述

报错如下

> python manage.py test tweets
..............
  File "C:\\Users\\17293\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\django\\db\\backends\\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "C:\\Users\\17293\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\django\\db\\utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\\Users\\17293\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\django\\db\\backends\\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "C:\\Users\\17293\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\django\\db\\backends\\mysql\\base.py", line 73, in execute
    return self.cursor.execute(query, args)
  File "C:\\Users\\17293\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\MySQLdb\\cursors.py", line 206, in execute
    res = self._query(query)
  File "C:\\Users\\17293\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\MySQLdb\\cursors.py", line 319, in _query
    db.query(q)
  File "C:\\Users\\17293\\AppData\\Local\\Programs\\Python\\Python39\\lib\\site-packages\\MySQLdb\\connections.py", line 259, in query
    _mysql.connection.query(self, query)
django.db.utils.ProgrammingError: (1146, "Table \'test_d_twitter_db.tweets_tweet\' doesn\'t exist")
PS C:\\Users\\17293\\Desktop\\Coder\\Python\\Django\\twitter> python .\\manage.py makemigrations

数据表是单元测试自己创建的,是不是手动创建的
所以这个报错一开始让我摸不着头脑

解决方案

执行如下命令

python manage.py makemigrations

在执行单元测试的命令就好了

python manage.py test tweets

不需要执行

python manage.py migratie

以上是关于Django 单元测试报错没有创建数据表的主要内容,如果未能解决你的问题,请参考以下文章

python django的单元测试

从 1.8 升级到 2.2.4 后,Django 无法创建用于单元测试的表

Django:在运行单元测试之前创建测试表时“无法添加外键约束”

Django 测试冻结在数据库创建

用于创建数据库、运行测试的 Django / postgres 设置

带有加载夹具的 Django 单元测试,用于解决几个相关的应用程序问题