标签: django-testing

django测试应用程序错误 - 创建测试数据库时出错:拒绝创建数据库的权限

当我尝试使用命令测试任何应用程序时(当我尝试使用使用此命令的fabric部署myproject时我注意到了它):

python manage.py test appname
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Creating test database for alias 'default'...
Got an error creating the test database: permission denied to create database

Type 'yes' if you would like to try deleting the test database 'test_finance', or 'no' to cancel
Run Code Online (Sandbox Code Playgroud)

syncdb命令似乎有效.我在settings.py中的数据库设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'finance',                      # Or path to database file if using sqlite3.
        'USER': 'django',                      # Not used with sqlite3.
        'PASSWORD': 'mydb123',                  # Not used …
Run Code Online (Sandbox Code Playgroud)

python sql django postgresql django-testing

158
推荐指数
7
解决办法
6万
查看次数

没有找到带有参数'()'和关键字参数'{}'的Django Reverse

嗨,我有一个令人愤怒的问题.

我有这样的网址模式:

# mproject/myapp.urls.py

url(r'^project/(?P<project_id>\d+)/$','user_profile.views.EditProject',name='edit_project'),
Run Code Online (Sandbox Code Playgroud)

它在浏览器中工作正常,但是为了测试,当我在shell中执行此操作时:

from django.test import Client
from django.core.urlresolvers import reverse

client= Client()
response = client.get(reverse('edit_project'), project_id=4)
Run Code Online (Sandbox Code Playgroud)

我害怕:

NoReverseMatch: Reverse for 'edit_project' with arguments '()' and keyword arguments '{}' not found.
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

django django-testing

124
推荐指数
2
解决办法
9万
查看次数

我应该如何在Django中为Forms编写测试?

我想编写测试时,我想在Django中模拟我的观点请求.这主要是为了测试表格.这是一个简单测试请求的片段:

from django.tests import TestCase

class MyTests(TestCase):
    def test_forms(self):
        response = self.client.post("/my/form/", {'something':'something'})
        self.assertEqual(response.status_code, 200) # we get our page back with an error
Run Code Online (Sandbox Code Playgroud)

无论是否存在表单错误,页面始终返回200的响应.如何检查我的表单失败以及特定字段(soemthing)是否有错误?

python django django-testing

99
推荐指数
3
解决办法
5万
查看次数

测试邮件发送

测试电子邮件发送的任何提示?除了创建一个Gmail帐户,特别是接收这些电子邮件?

我想将本地电子邮件存储在发送的文件夹中.

python email django smtp django-testing

77
推荐指数
5
解决办法
4万
查看次数

Django的self.client.login(...)在单元测试中不起作用

我已经通过两种方式为我的单元测试创​​建了用户:

1)为"auth.user"创建一个看起来大致如下的夹具:

    { 
        "pk": 1, 
        "model": "auth.user", 
        "fields": { 
            "username": "homer", 
            "is_active": 1, 
            "password": 
"sha1$72cd3$4935449e2cd7efb8b3723fb9958fe3bb100a30f2", 
            ... 
        } 
    }
Run Code Online (Sandbox Code Playgroud)

我遗漏了看似不重要的部分.

2)在setUp函数中使用'create_user'(尽管我宁愿将所有内容保存在我的fixtures类中):

def setUp(self): 
       User.objects.create_user('homer', 'ho...@simpson.net', 'simpson') 
Run Code Online (Sandbox Code Playgroud)

请注意,在这两种情况下密码都是simpson.

我已经验证了这个信息一次又一次正确地加载到测试数据库中.我可以使用User.objects.get获取User对象.我可以使用'check_password'验证密码是否正确.用户处于活动状态.

然而,self.client.login(username ='homer',password ='simpson')FAILS总是如此.我很困惑为什么.我想我已经阅读了与此相关的每一个互联网讨论.有人可以帮忙吗?

单元测试中的登录代码如下所示:

    login = self.client.login(username='homer', password='simpson') 
    self.assertTrue(login) 
Run Code Online (Sandbox Code Playgroud)

谢谢.

django unit-testing django-authentication django-testing

69
推荐指数
4
解决办法
3万
查看次数

我怎样才能测试django消息?

在我的django应用程序中,我正在尝试编写执行操作的单元测试,然后检查响应中的消息.

据我所知,没有很好的方法可以做到这一点.

我正在使用CookieStorage存储方法,我想做类似以下的事情:

    response = self.client.post('/do-something/', follow=True)
    self.assertEquals(response.context['messages'][0], "fail.")
Run Code Online (Sandbox Code Playgroud)

问题是,我得到的只是一个

print response.context['messages']
<django.contrib.messages.storage.cookie.CookieStorage object at 0x3c55250>
Run Code Online (Sandbox Code Playgroud)

我怎么能把它变成有用的东西,或者我做错了什么?

谢谢,丹尼尔

python django unit-testing django-testing

68
推荐指数
3
解决办法
1万
查看次数

Django:测试页面是否已重定向到所需的URL

在我的django应用程序中,我有一个身份验证系统.因此,如果我没有登录并尝试访问某个配置文件的个人信息,我会被重定向到登录页面.

现在,我需要为此编写一个测试用例.我得到的浏览器的回复是:

GET /myprofile/data/some_id/ HTTP/1.1 302 0
GET /account/login?next=/myprofile/data/some_id/ HTTP/1.1 301 0
GET /account/login?next=/myprofile/data/some_id/ HTTP/1.1 200 6533
Run Code Online (Sandbox Code Playgroud)

我该如何写测试?这就是我到目前为止:

self.client.login(user="user", password="passwd")
response = self.client.get('/myprofile/data/some_id/')
self.assertEqual(response.status,200)
self.client.logout()
response = self.client.get('/myprofile/data/some_id/')
Run Code Online (Sandbox Code Playgroud)

接下来会发生什么?

python django django-testing

57
推荐指数
4
解决办法
4万
查看次数

如何在django单元测试中获取请求对象?

我有一个功能

def getEvents(eid, request):
    ......
Run Code Online (Sandbox Code Playgroud)

现在我想分别为上面的函数编写单元测试(不调用视图).那么我该如何调用上面的内容呢TestCase?是否可以创建请求?

python django django-testing

50
推荐指数
3
解决办法
4万
查看次数

Django:有没有办法从单元测试中计算SQL查询?

我试图找出实用程序函数执行的查询数.我已经为这个函数编写了一个单元测试,并且该函数运行良好.我想要做的是跟踪函数执行的SQL查询的数量,以便我可以看到在重构之后是否有任何改进.

def do_something_in_the_database():
    # Does something in the database
    # return result

class DoSomethingTests(django.test.TestCase):
    def test_function_returns_correct_values(self):
        self.assertEqual(n, <number of SQL queries executed>)
Run Code Online (Sandbox Code Playgroud)

编辑:我发现有一个待定的Django 功能请求.但是票仍然是开放的.与此同时还有另一种方法可以解决这个问题吗?

django django-orm django-testing

49
推荐指数
6
解决办法
2万
查看次数

如何启动django可重用应用程序的测试?

我可以在不将此应用程序合并到项目中的情况下为我的可重用Django应用程序启动测试吗?

我的应用程序使用了一些模型,因此有必要提供(TEST_)DATABASE_*设置.我应该在哪里存储它们以及如何启动测试?

对于Django项目,我可以运行测试manage.py test; 当我使用django-admin.py test我的独立应用程序时,我得到:

错误:无法导入设置,因为未定义环境变量DJANGO_SETTINGS_MODULE.

这里的最佳做法是什么?

testing django django-testing

45
推荐指数
4
解决办法
6773
查看次数