Данные по-прежнему добавляются в БД даже после написания имитационного теста для API в flask python - PullRequest
0 голосов
/ 26 апреля 2020

мой файл rout.py

Я хочу проверить api своего поста, что, независимо от функции, которую он вызывает, и избегая добавления данных, добавляемых в базу данных, я сделал несколько насмешек (попытка реализовать это в первый раз) дело в том, что я не получаю ошибок, просто каждый раз, когда я запускаю тест, он добавляет в мою базу данных данные, которые мне не нужны. что я делаю неправильно ???

from Login_app import app, db
from flask import request, jsonify
from Login_app.routes_Util import check_credentials_post, check_credentials_put, check_json_post, check_json_put
import http


################################################################################
@app.route('/register/', methods=['POST'])
def post():
    db.create_all()
    data_received = request.get_json()
    if check_json_post(data_received) is False:
        return jsonify(status="Bad Entries"), http.HTTPStatus.BAD_REQUEST
    else:
        username = (data_received["username"])
        password = (data_received["password"])
        email = (data_received["email"])
        result = check_credentials_post(username, password, email)
        if result == 208:
            return jsonify(status="Already Exists"), http.HTTPStatus.ALREADY_REPORTED
        elif result == 503:
            return jsonify(status="Database Error"), http.HTTPStatus.SERVICE_UNAVAILABLE
        elif result == 202:
            return jsonify(status="Added New User"), http.HTTPStatus.ACCEPTED
################################################################################


@app.route('/login/', methods=['PUT'])
def valid():
    data_received = request.get_json()
    if check_json_put(data_received) is False:
        return jsonify(status="Bad Entries"), http.HTTPStatus.BAD_REQUEST
    else:
        username = (data_received["username"])
        password = (data_received["password"])
        result = check_credentials_put(username, password)
        if result == "401_user_not_found":
            return jsonify(status="User does not exist"), http.HTTPStatus.UNAUTHORIZED
        elif result == "401_password_not_matching":
            return jsonify(status="Password does not match"), http.HTTPStatus.UNAUTHORIZED
        elif result == 503:
            return jsonify(status="Database Error"), http.HTTPStatus.SERVICE_UNAVAILABLE
        elif result == 202:
            return jsonify(status="Login successful"), http.HTTPStatus.ACCEPTED
################################################################################

структура каталога

Login Portal
.....\Login_app
.........\tests
..........test_routes_mock.py
.....routes.py
.....__init__.py
.....config.py
.....routes.Util.py
.....
.....
venv
main.py

мой тестовый файл test_routes_mock.py внутри тестовой папки

import json
from unittest import mock
import unittest
from Login_app import app


class FlaskTest(unittest.TestCase):

    def setUp(self):
        self.app = app.test_client()

    @mock.patch('Login_app.api_util.check_credentials_post')
    @mock.patch('Login_app.api_util.check_json_post')
    def test_register(self, mock_check_credentials_post, mock_check_json_post):
        mock_check_credentials_post.return_value = 202
        mock_check_json_post.return_value = True
        result = self.app.post('/register/',
                               data=json.dumps({'username': 'user1', 'password': 'pass1', 'email': 'user@gmail.com'}),
                               content_type='application/json')

        self.assertEqual(result.status_code, 202)


if __name__ == '__main__':
    unittest.main()
...