Django忽略测试数据库设置

2024-09-27 21:28:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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启动项目的)

^{pr2}$

以下是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

Tags: djangotestcreating名称数据库应用程序for部署
3条回答

我根据这里建议的模式重新组织设置文件来解决这个问题Recommended Django Project Layout。在

现在我的测试在pythonanwhere上运行得很好。在

顺便说一句,我在这里创建了一个gist,它处理虚拟环境和布局的问题,以及如何处理虚拟环境变量。在

这是一种常见而正确的行为。Django在测试时总是尝试创建新的数据库,而且您永远不应该尝试在您的实时/生产数据库上测试应用程序。在

您的测试应该以一种方式构建,即创建对象,然后测试它们的行为。在heroku上使用postgres,在development server上使用mysql。如果你想使用这个数据库来测试你的应用程序,你必须添加django用户到你的postgres/mysql,拥有创建和删除数据库/表的权限。在

也可以通过将此设置添加到py设置(当我不使用任何其他扩展和sqlite3数据库就足够时,我喜欢这样做。我通过输入python manage.py test来运行测试

if any([arg in sys.argv for arg in ['jenkins', 'test']]):
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': 'mydatabase',
        }
    }

我认为你应该改变你的格式设置.py,您不能将if条件放入其中,而是根据您正在处理的环境使用不同的设置!在

我建议你读这篇tutorial。在

当你有适当的布局,你可以改变数据库在不同的设置文件;)!在

相关问题 更多 >

    热门问题