Как создать пользователя-администратора в django tests.py

В версиях ОС 8+ Android ограничивает фоновую обработку, если она не является частью службы переднего плана или заданием, инициированным JobScheduler. В результате этого ограничения библиотека маяков Android по умолчанию будет использовать JobScheduler на Android 8+. На переднем плане «немедленный» ScanJob будет постоянно выполняться для сканирования. В фоновом режиме (то есть, когда никакие действия не видны с разблокированным экраном), Android не позволяет этого. Работа может быть запланирована не чаще, чем раз в ~ 15 минут. Вот почему вы видите, что сканирование прекращается.

Неважно, что у вас есть собственный сервис переднего плана. Android по-прежнему применяет эти ограничения для любой фоновой обработки, выполняемой вне этой службы переднего плана.

Две альтернативы:

  1. Жить с ограничениями на работу (сканирование каждые 15 минут). Используйте BackgroundPowerSaver для автоматического переключения между режимом переднего плана / фона и установите beaconManager.setBackgroundScanPeriod(5000) (для сканирования в течение 5 секунд каждые 15 минут). Для ясности следует также установить beaconManager.setBackgroundBetweenScanPeriod(15*60*1000) (15 минут), хотя можно установить более низкое значение, которое будет быть запрещенным ОС на Android 8+.

  2. Настройте библиотеку для сканирования с помощью своей собственной службы переднего плана (да, как службы второго переднего плана), как описано здесь . Затем вы можете прекратить использовать свой собственный сервис переднего плана или оставить его. Если вы сохраните его, вы увидите два значка уведомлений о двух запущенных службах переднего плана. можно объединить эти два уведомления , если вы хотите сохранить две службы переднего плана и показать только одно уведомление.

27
задан PhoebeB 7 September 2010 в 09:41
поделиться

2 ответа

Обновление 2

Выполнен фрагмент кода для создания суперпользователя из тестового примера (подкласс django.test.TestCase). Все прошло нормально. Также создан и сохранен экземпляр UserProfile с user = self.adminuser. Это тоже сработало.

Обновление

Эта строка интересна:

File "/usr/lib/python2.4/site-packages/Django-1.1.1-py2.4.egg/django/contrib/auth/management/__init__.py", line 28, in create_permissions
        defaults={'name': name, 'content_type': ctype})

Похоже, что при создании разрешений происходит сбой выполнения.

Оригинальный ответ

Предупреждение: данные усекаются для столбца «имя» в строке 1

Странно. Я попробовал это из оболочки Django, и это сработало для меня. Я использую Postgresql 8.3 и Django 1.2.1 на Ubuntu Jaunty. Можете ли вы дать более подробную информацию о том, какую версию Django / базы данных вы используете?

Также User не имеет атрибута name. Можете ли вы дважды проверить, используете ли вы auth.User?

Нужно ли загружать пользователей-администраторов в качестве приборов?

Вам не нужно делать . Но если вы создаете этого администратора только для целей тестирования, было бы неплохо добавить Fixture. Именно этим я и занимаюсь в своих проектах.

4
ответ дан Manoj Govindan 28 November 2019 в 04:50
поделиться

Я бы использовал встроенный create_superuser и регистрировал пользователя перед тем, как делать какие-либо запросы. Следующее должно работать:

from django.contrib.auth.models import User
from django.test.client import Client

# store the password to login later
password = 'mypassword' 

my_admin = User.objects.create_superuser('myuser', 'myemail@test.com', password)

c = Client()

# You'll need to log him in before you can send requests through the client
c.login(username=my_admin.username, password=password)

# tests go here
55
ответ дан Sam Dolan 28 November 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: