2016-08-03 4 views
3

Мне нужно проверить определенное представление, которое получает определенную информацию от request.args.Как установить запросы args с помощью Flask test_client?

Я не могу издеваться над этим, так как много вещей в представлении использует объект запроса. Единственная альтернатива, о которой я могу думать, это вручную установить request.args.

я могу сделать это с его test_request_context(), например:

with self.app.test_request_context() as req: 
    req.request.args = {'code': 'mocked access token'} 
    MyView() 

Теперь запрос внутри этой точки зрения будет иметь аргументы, которые я указал. Однако я должен назвать свою точку зрения, а не только инициализировать его, поэтому я использую это:

with self.app.test_client() as c: 
    resp = c.get('/myview') 

Но я не знаю, как манипулировать аргументы запроса таким образом.

Я попытался это:

with self.app.test_client() as c: 
    with self.app.test_request_context() as req: 
     req.request.args = {'code': 'mocked access token'} 
     resp = c.get('/myview') 

, но это не установлено request.args.

+0

Обратите внимание, что установка 'request.args' в' dict' неверна, это фактически 'MultiDict'. – davidism

+0

Да, но мое единственное взаимодействие с 'request.args' в моем представлении - через request.args.get ('foobar'). Другими словами, функциональность ImmutableMultiDict совершенно неактуальна здесь. И даже если это проблема, я не знаю, как ее установить. –

ответ

6

Пропускают query_string аргумент c.get, который может быть либо dict, А MultiDict, или уже закодированы строкой.

with app.test_client() as c: 
    r = c.get('/', query_string={'name': 'davidism'}) 

test client request methods The передают свои аргументы Werkzeug-х EnvironBuilder, что там, где это документально.

 Смежные вопросы

  • Нет связанных вопросов^_^