Flask/mongodb webapp不一致

2024-04-19 05:26:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个由单节点mongodb支持的烧瓶集成测试,它随机失败:

pytest/test_webapi.py:59: in test_register_test
>           assert res.status_code == 302
E           assert <Response streamed [404 NOT FOUND]>.status_code == 302

失败率约为50%。在

测试中的测试_网络API.py这样看来:

^{pr2}$

相关烧瓶方法网络API.py公司名称:

@app.route("/register", methods=["POST"])
def register_user():
    mail = flask.request.form['mail']
    user = flask.request.form["user"]
    pw = flask.request.form["pass"]

    hash = users.register(user, pw, mail=mail)
    return flask.jsonify({'_id': None}) # XXX

@app.route('/activate/<hash>', methods=['GET'])
def activate_user(hash):
    key = users.activate(hash=hash)
    if not key:
        flask.abort(404)
    return flask.redirect("/")

。。。由操作方法支持:

make_key = lambda : base64.encodestring(os.urandom(32)).strip()

def register(self, user, pw, **kw):
    hash = self.make_key()
    user = self.new(user, pw, activation=hash, **kw)
    self._send_mail(**user)
    return hash

def activate(self, hash):
    user = self.users.find_one({'activation': hash})
    if not user:
        return None
    key = self.make_key()
    activation = {
        '$unset': {'activation': 1},
        '$set': {'status': 'active', 'key': key} }
    self.users.update({'_id': user['_id']}, activation)
    return user

。。。哪里自助用户是一个mongodb集合。在

在自我更新()使用safe=True保存实体。在

有趣的是,其他一些做类似事情的测试似乎从来没有遇到过这个问题。在

我原以为这足以确保持久化对象对pymongo连接池中的其他线程可见。我应该更仔细地阅读mongodb/pymongo文档的哪一部分?或者与asyncore有什么奇怪的交互?在


Tags: keytestselfregisterflaskreturnmongodbdef
1条回答
网友
1楼 · 发布于 2024-04-19 05:26:06

(从评论线程移植)

在测试的上下文中,data值是否只是激活密钥的base64编码字符串?base64包含字母和数字,但也包含“+”和“/”,这两个字符都会被URL解析器(尤其是“/”)误解。在

相关问题 更多 >