Юникод в модульном тесте Django - PullRequest
1 голос
/ 10 октября 2011

Я пытаюсь использовать строку utf8 в модульном тесте Django и включаю

# -*- coding: utf-8 -*-

но django-admin.py по-прежнему жалуется, что кодировка отсутствует.

Traceback (последний последний вызов):

Файл "/home/basti/work/virtualenv/bin/django-admin.py", строка 5, в management.execute_from_command_line ()

Файл "/Home/basti/work/virtualenv/lib/python2.7/site-packages/django/core/management/init.py", строка 429, в execute_from_command_line utility.execute ()

Файл "/Home/basti/work/virtualenv/lib/python2.7/site-packages/django/core/management/init.py", строка 379, в исполнении self.fetch_command (субкоманда) .run_from_argv (self.argv)

Файл "> /home/basti/work/virtualenv/lib/python2.7/site-packages/django/core/management/base.py", строка 191, в run_from_argv self.execute (* args, ** options. dict )

Файл "/Home/basti/work/virtualenv/lib/python2.7/site-packages/django/core/management/base.py", линия 220, в исполнении output = self.handle (* аргументы, ** параметры)

Файл "/Home/basti/work/virtualenv/lib/python2.7/site-packages/south/management/commands/test.py", линия 8, в ручке super (Command, self) .handle (* args, ** kwargs)

Файл "/Home/basti/work/virtualenv/lib/python2.7/site-packages/django/core/management/commands/test.py", линия 37, в ручке failures = test_runner.run_tests (test_labels)

Файл "/Home/basti/work/virtualenv/lib/python2.7/site-packages/django/test/simple.py", строка 358, в run_tests suite = self.build_suite (test_labels, extra_tests)

Файл "/Home/basti/work/virtualenv/lib/python2.7/site-packages/django/test/simple.py", строка 248, в build_suite suite.addTest (build_suite (приложение))

Файл "/Home/basti/work/virtualenv/lib/python2.7/site-packages/django/test/simple.py", строка 77, в build_suite test_module = get_tests (app_module)

Файл "/Home/basti/work/virtualenv/lib/python2.7/site-packages/django/test/simple.py", строка 35, в get_tests test_module = import ('.'. join (app_path + [TEST_MODULE]), {}, {}, TEST_MODULE)

SyntaxError: Не-ASCII символ '\ xc3' в файле tests.py в строке 242, но кодировка не объявлена; см http://www.python.org/peps/pep-0263.html для деталей

Код

# - - кодировка: utf-8 - -

"""                                                                                                                                                                                                         
This file demonstrates writing tests using the unittest module. These will pass                                                                                                                             
when you run "manage.py test".                                                                                                                                                                              

Replace this with more appropriate tests for your application.                                                                                                                                              
"""

from django.test import TestCase, Client
from django.contrib.auth.models import User
from django.db.utils import IntegrityError
from django.core.urlresolvers import reverse
from django.utils.encoding import smart_unicode

class ViewTests(TestCase):
    def setUp(self):
    self.client = Client()

   def test_french(self):
    self.client.cookies["django_language"] = 'fr'
    r = self.client.get("/")
    self.assertTrue(smart_unicode(u"Se déconnecter") in r.content)

Я пытался установить TEST_CHARSET и TEST_DATABASE_CHARSET в utf8, но все равно не повезло.

Есть какие-нибудь советы, как это решить?

TIA && хорошего дня!

Басти

Ответы [ 4 ]

3 голосов
/ 10 октября 2011

Введите:

# -*- coding: utf-8 -*-

В качестве первой строки для этого файла.

2 голосов
/ 13 октября 2011

Чтобы ответить на мой собственный вопрос, проблема была не в соответствующей строке, а в кодировке содержимого запросов!Измените тест следующим образом, исправьте его

self.assertTrue (u "Se déconnecter" в r.content.decode ('utf8')) *

0 голосов
/ 24 августа 2016

У меня была эта проблема, потому что в моем файле models.py кодировка не была установлена.Помещение # -*- coding: utf-8 -*- в мой models.py и наличие того же в моих тестовых файлах решило проблему.

0 голосов
/ 10 октября 2011

Убедитесь, что у вас есть кодировка, определенная в каждом файле, включая модели и, конечно, в tests.py.Если возможно, получите последнюю версию django.

Если администратор все еще не работает, попробуйте:

Решение № 1:

from django.utils.encoding import smart_unicode

В определении модели:

def __unicode__(self):  
    return smart_unicode(("%s" % self.field))

Решение# 2: Литеральный метод

def __unicode__(self):   
    return (u"%s" % self.field)  

Всегда устанавливать

DEFAULT_CHARSET='utf-8'  

в settings.py

Вы также можете перевести [этот пост] [1] [1]:http://www.pvilas.com/2011/03/django-evitar-error-en-el-administrador.html с испанского.Я надеюсь, что может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...