Ошибка в django unittest при загрузке прибора

Я делаю unittests для приложения django. Мне нужны некоторые данные в базе данных для моих тестов, поэтому я использую json fixture.

У меня два светильника:

  1. для пользователей, и он работает нормально.
  2. для некоторых веб-страниц

Прибор 2 вызывает следующую ошибку:

Problem installing fixture 'C:\Users\luc\Dev\Hg\mnl-adminpub\website\fixtures\website-unittest.json': Traceback (most recent call last): File "C:\Python26\lib\site-packages\django\core\management\commands\loaddata.py", line 169, in handle obj.save(using=using) File "C:\Python26\lib\site-packages\django\core\serializers\base.py", line 165, in save models.Model.save_base(self.object, using=using, raw=True) File "C:\Python26\lib\site-packages\django\db\models\base.py", line 528, in save_base result = manager._insert(values, return_id=update_pk, using=using) File "C:\Python26\lib\site-packages\django\db\models\manager.py", line 195, in _insert return insert_query(self.model, values, **kwargs) File "C:\Python26\lib\site-packages\django\db\models\query.py", line 1479, in insert_query return query.get_compiler(using=using).execute_sql(return_id) File "C:\Python26\lib\site-packages\django\db\models\sql\compiler.py", line 783, in execute_sql cursor = super(SQLInsertCompiler, self).execute_sql(None) File "C:\Python26\lib\site-packages\django\db\models\sql\compiler.py", line 727, in execute_sql cursor.execute(sql, params) File "C:\Python26\lib\site-packages\django\db\backends\mysql\base.py", line 86, in execute return self.cursor.execute(query, args) File "C:\Python26\lib\site-packages\MySQLdb\cursors.py", line 173, in execute self.errorhandler(self, exc, value) File "C:\Python26\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler raise errorclass, errorvalue OperationalError: (1366, "Incorrect string value: '\\xE2\\x80\\xA8<br...' for column 'html' at row 1") 

Я создал прибор с дампадами. Я тестировал его с loaddata, и он отлично работает. Я использую mysql.

Любая идея о возможной причине проблемы?

Спасибо за вашу помощь

3 Solutions collect form web for “Ошибка в django unittest при загрузке прибора”

Вы должны использовать TEST_CHARSET , но внутри DATABASE config. Как это:

 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test_sbet', 'USER': 'test_sbet', 'TEST_CHARSET': 'UTF8', } } 

Если это произойдет только во время тестирования, я бы заподозрил некоторые настройки TEST_, такие как TEST_CHARSET . Возможно, у вашего (обычного, не тестового) db есть некорректная кодировка? Если это так, вам нужно указать, какую кодировку должна установить тестовая база данных.

BTW. Если вы используете более старую версию (pre 1.2), то это должно быть сделано с помощью TEST_DATABASE_CHARSET .

Имел ту же проблему. Использование utfmb4 в базе данных MySql и добавление ключа CHARSET в словарь TEST помогли (Django 1.11):

 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { ... 'charset': 'utf8mb4', }, 'TEST': {'CHARSET': 'utf8mb4',}, } } 
  • Загрузка SQL-дампа перед запуском тестов Django
  • Django: тестирование, если страница перенаправлена ​​на нужный URL-адрес
  • Как сохранить тестовые данные после завершения тестов Django?
  • Django LiveServerTestCase: Пользователь, созданный в методе setUpClass, недоступен в test_method?
  • Как написать тесты для форм в Django?
  • Ошибка приложения django test - получена ошибка при создании тестовой базы данных: разрешение отклонено для создания базы данных
  • Как выполнить произвольный скрипт в контексте моего проекта Django?
  • Используя покрытие, как проверить эту строку?
  • Python - лучший язык программирования в мире.