Модульный тест на Redis с Flask и Pytest - PullRequest
0 голосов
/ 27 апреля 2020

У меня проблема с юнит-тестами через pytest.

Для контекстуализации я пытаюсь проверить наличие и наличие данных на моем Redis.

Для моих взаимодействий с Redis я использую это : https://github.com/underyx/flask-redis/blob/master/flask_redis/client.py

Мои тесты выглядят так:

sample_key = b"-vmbFSk5WRKwnIRIkBLWtEd5g9Hqy3IO67Bmdnqf2Ek="
user_uuid = "8bb739e5-cf44-4e87-b1f7-b8eb1cc6c25d"


def test_check_already_connected():
    assert check_already_connected(user_uuid) is False
    RedisWrapper.set(sample_key, '3', user_uuid)


def test_check_already_connected1():
    RedisWrapper.set(sample_key, '3', user_uuid)
    print("keys")
    print(RedisWrapper.get_all_keys())
    assert check_already_connected(user_uuid) is True

Вот что я получаю, когда запускаю свои тесты:

tests/test_authentication.py Error -  the JSON object must be str, bytes or bytearray, not NoneType
.Error -  the JSON object must be str, bytes or bytearray, not NoneType
keys
[]
F

============================================= FAILURES =============================================
__________________________________ test_check_already_connected1 ___________________________________

    def test_check_already_connected1():
        RedisWrapper.set(sample_key, '3', user_uuid)
        print("keys")
        print(RedisWrapper.get_all_keys())
>       assert check_already_connected(user_uuid) is True
E       AssertionError: assert False is True
E        +  where False = check_already_connected('8bb739e5-cf44-4e87-b1f7-b8eb1cc6c25d')

tests/test_authentication.py:26: AssertionError
=================================== 1 failed, 1 passed in 0.42s ====================================

Моя оболочка для redis: https://textup.fr/435412an

Инициализация redis_client в приложении / init .py

app = Flask(__name__)
redis_client = FlaskRedis(app)

Функция, которую я хочу протестировать:

def check_already_connected(user_uuid):
    redis_keys = RedisWrapper.get_all_keys()
    if redis_keys:
        for key in redis_keys:
            entry = RedisWrapper.get(key)
            account_uuid = entry.get('3')
            if account_uuid == str(user_uuid):
                return True
    return False

Я предполагаю, что проблема заключается в инициализации Redis до моих тестов, но я протестировал несколько решений без успеха.

...