#python #unit-testing #flask #mocking
#python #модульное тестирование #flask #издевательство
Вопрос:
Я должен выполнить UnitTest для предопределенных данных, создав макет файла базы данных JSON, и проверить, что приложение возвращает правильную информацию. вот мое приложение с функцией getUsers:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
@app.route("/users")
def getUsers():
# Opening JSON file
f = open('users.json') # users.json is the Database
data = json.load(f)
for value in data.values():
value.pop('id')
result_dict = json.dumps(data)
return result_dict
я пытался издеваться так:
@patch('hello.getUsers')
def test_users(MockBlog):
getUsers = MockBlog()
getUsers.return_value = requests.get('https://my-json-server.typicode.com/MosenzonTal/demo/db').json()
response = getUsers()
print(response)
я должен проверить выходные данные getUsers из поддельной базы данных.
ответ:
{‘test_user1’: {‘id’: ‘tes1t’, ‘name’: ‘Тестовый пользователь 1’, ‘favorite_color’: ‘Черный’}
но идентификатор пользователя не был отфильтрован, как я ожидал. ПОЧЕМУ? разве этот код не должен применять getUsers к поддельной БД?
Ответ №1:
Учитывая, что вы меняете возвращаемое значение MockBlog
на запрос ответа https://my-json-server.typicode.com/MosenzonTal/demo/db , вы получите хранящиеся там данные (включая идентификатор).