【问题标题】:Unittest a route that returns a json gives this error: "TypeError: decoding str is not supported"对返回 json 的路由进行单元测试会出现此错误:“TypeError:不支持解码 str”
【发布时间】:2019-10-10 15:03:48
【问题描述】:

我有一个返回 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

【问题讨论】:

  • 有什么帮助吗?我真的被困在了这个

标签: python flask python-unittest


【解决方案1】:

所以我在一段时间后解决了这个问题。 问题是我的数据是字节,我在测试用例中传递字符串。 所以改变了这个

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')]

【讨论】:

    猜你喜欢
    • 2020-02-03
    • 1970-01-01
    • 2021-03-12
    • 2018-11-30
    • 2021-11-07
    • 2015-10-23
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    相关资源
    最近更新 更多