Макет response.text в модульном тесте - PullRequest
0 голосов
/ 30 марта 2019

Я пытаюсь получить ответ от API с кодом ниже.Я получаю результат и печатаю его как response.text.Для этого же я пытаюсь написать модульный тест.Я могу смоделировать ответ API с содержимым JSON.Но я получаю сообщение об ошибке, как показано ниже, во время выполнения модульного теста.

AttributeError: 'dict' object has no attribute 'text'

Код:

import requests
from requests.auth import HTTPBasicAuth
import json

def get_call():
   url = 'https://test/api/v1'
   username = 'NTdasj'
   pwd = '3214234'

   response = requests.get(url, auth=HTTPBasicAuth(username, pwd))
   data = json.loads(response.text)
   print(data)

Код испытания единицы измерения:

from get_api import get_call
from mock import patch
import os
import sys
import json
testdir = os.path.dirname(__file__)
sys.path.insert(0, os.path.abspath(os.path.join(testdir)))


resp = {
  "success": True,
  "message": "Data exist",
  "data": []
 }
response = json.dumps(resp)
newresponse = json.loads(response)

@patch('get_api.requests.get')
def test_get_call(get):
   get.side_effect = [newresponse]
   get_call()

1 Ответ

0 голосов
/ 31 марта 2019

Вы издеваетесь requests.get, чтобы создать dict, а не объект, атрибут которого text является кодировкой JSON dict.

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