我在pythonanwhere上部署了一个运行良好的应用程序。问题是,当我想运行testdjango时,我的测试数据库设置被完全忽略。 每次运行测试时,我都会得到以下结果尽管如此. 在
Creating test database for alias 'default'...
Got an error creating the test database: (1044, "Access denied for user 'funnshopp'@'%' to database 'test_funnshopp$funn'")
应用程序的数据库名称是funnshopp$funn
。可以看出,django总是试图通过在数据库名称后面添加test_
来创建测试数据库。别在意我在DATABASES
设置中有什么
下面是我的完整设置文件(测试在我的电脑上运行良好,我使用的是Django 2.0
,尽管我是用Django 1.11
启动项目的)
以下是pip freeze
的结果
alabaster==0.7.10
Babel==2.5.1
beautifulsoup4==4.6.0
certifi==2017.11.5
chardet==3.0.4
colorama==0.3.9
coverage==4.4.2
dj-database-url==0.4.2
dj-static==0.0.6
Django==2.0.1
django-addanother==2.0.0
django-archive==0.1.5
django-braces==1.12.0
django-debug-toolbar==1.9.1
django-extensions==1.9.9
django-guardian==1.4.9
django-heroku==0.2.0
django-pure-pagination==0.3.0
django-recaptcha==1.3.1
django-toolbelt==0.0.1
django-webtest==1.9.2
docutils==0.14
funcsigs==1.0.2
gunicorn==19.7.1
idna==2.6
我根据这里建议的模式重新组织设置文件来解决这个问题Recommended Django Project Layout。在
现在我的测试在pythonanwhere上运行得很好。在
顺便说一句,我在这里创建了一个gist,它处理虚拟环境和布局的问题,以及如何处理虚拟环境变量。在
这是一种常见而正确的行为。Django在测试时总是尝试创建新的数据库,而且您永远不应该尝试在您的实时/生产数据库上测试应用程序。在
您的测试应该以一种方式构建,即创建对象,然后测试它们的行为。在heroku上使用postgres,在development server上使用mysql。如果你想使用这个数据库来测试你的应用程序,你必须添加django用户到你的postgres/mysql,拥有创建和删除数据库/表的权限。在
也可以通过将此设置添加到py设置(当我不使用任何其他扩展和sqlite3数据库就足够时,我喜欢这样做。我通过输入
python manage.py test
来运行测试我认为你应该改变你的格式设置.py,您不能将if条件放入其中,而是根据您正在处理的环境使用不同的设置!在
我建议你读这篇tutorial。在
当你有适当的布局,你可以改变数据库在不同的设置文件;)!在
相关问题 更多 >
编程相关推荐