Unittest маршрут, который возвращает json, выдает эту ошибку: «Ошибка TypeEr: декодирование str не поддерживается» - PullRequest
0 голосов
/ 10 октября 2019

У меня есть маршрут, который возвращает JSON. Я проверяю этот маршрут, чтобы проверить, равен ли возвращенный json моему ожидаемому json. Когда я тестирую этот маршрут, я получаю эту ошибку: декодирование str не поддерживается

Эта функция работает нормально, она возвращает список, который я хочу. Код из функции, которую я хочу проверить:

@app.route('/users', methods=['GET'])
@jwt_required
def user_list():



    users = ldap.get_group_members('ship_crew')
    user_list = []

    for user in users:
        user_list.append((str(user, encoding='utf-8').split(",")[0].split("=")[1]))
    return jsonify(user_list)

Тестовый код:

@patch('dev_maintenance.user_list.ldap.get_group_members')
def test_content_type_json(get_group_members, access_token):

    get_group_members.return_value = ["cn=Philip J. Fry,ou=people,dc=planetexpress,dc=com",\
                                     "cn=Turanga Leela,ou=people,dc=planetexpress,dc=com",\
                                     "cn=Bender Bending Rodr\u00edguez,ou=people,dc=planetexpress,dc=com"]

    with app.test_client() as client:

        response = client.get('/users',
                              data=dict(user="hermes", passwd="hermes"),
                              headers={"Authorization": "Bearer {}".format(access_token)} )

    expected_json = ["Philip J. Fry", "Turanga Leela", "Bender Bending Rodr\u00edguez"]

    assert response.get_json() == expected_json

ошибка:

 @app.route('/users', methods=['GET'])
    @jwt_required
    def user_list():



        users = ldap.get_group_members('ship_crew')
        user_list = []

        for user in users:
>           user_list.append((str(user, encoding='utf-8').split(",")[0].split("=")[1]))
E           TypeError: decoding str is not supported

1 Ответ

0 голосов
/ 14 октября 2019

так что я исправляю проблему через некоторое время. Проблема состояла в том, что мои данные были байтами, и я передавал строки в тестовом примере. так изменил это

get_group_members.return_value =  [u"cn=Philip J. Fry,ou=people,dc=planetexpress,dc=com".encode('utf-8'),
                                      u"cn=Turanga Leela,ou=people,dc=planetexpress,dc=com".encode('utf-8'),
                                      u"cn=Bender Bending Rodr\u00edguez,ou=people,dc=planetexpress,dc=com".encode('utf-8')]
...