django-webtest с несколькими тестовыми клиентами
В django-webtest каждый тестовый подкласс TestCase поставляется с self.app, который является экземпляром webtest.TestApp, и я могу сделать так, чтобы он входил в систему как пользователь A с помощью self.app.get('/',user='A').,
Однако, если я хочу проверить поведение, если для пользователя A и пользователя B в тесте, как я должен это сделать?
Кажется, что self.app - это просто DjangoTestApp() с передачей extra_environ. Уместно ли просто создать еще один его экземпляр?
1 ответ
Я не пытался настроить другой экземпляр DjangoTestApp
как вы предлагаете, но я написал сложные тесты, в которых после выполнения запросов в качестве пользователя A I затем переключались на выполнение запросов в качестве пользователя B без проблем, в каждом случае передавая имя пользователя или имя пользователя при выполнении запроса, например self.app.get('/', user'A')
как вы уже написали.
Единственная часть, которая работала не так, как ожидалось, была при выполнении неаутентифицированных запросов, например self.app.get('/', user=None)
, Это не сработало, как ожидалось, и вместо этого продолжало использовать пользователя из запроса непосредственно перед этим.
Чтобы сбросить состояние приложения (которое должно позволить вам последовательно эмулировать большинство рабочих процессов с несколькими пользователями), вы можете запустить self.renew_app()
который обновит состояние вашего приложения, эффективно выйдя из системы.
Чтобы проверить одновременный доступ более чем одним пользователем (в вашем вопросе не указано, что именно вы пытаетесь проверить), затем настройте другой экземпляр DjangoTestApp
Казалось бы, стоит изучить.