单元测试Flask功能(登录用户)

2024-10-02 00:29:09 发布

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

我对Python和烧瓶还不熟悉,但我渐渐地开始掌握它了。到目前为止,我已经开始构建一个应用程序,现在我在想我应该开始一些单元测试。不过,我真的不知道该怎么办。我读过各种各样的文档、文章和例子,但我似乎无法将其转换成我自己的代码。我希望如果有人能告诉我如何为我的一个函数编写一个测试,那么事情就会安排妥当。在这个阶段,忽视它并继续构建我的应用程序是非常诱人的。在

@app.route('/user/<nickname>/create_bike', methods = ['GET', 'POST'] )
@login_required
def create_bike(nickname):
    user = User.query.filter_by(nickname = nickname).first()
    bikes = user.bikes.all()
    bikecount = user.bikes.count()
    form = CreateBike()
    if form.validate_on_submit():
        if bikecount < user.bike_allowance:
            # let user create a bike
            newbike = Bikes(bikename = form.bikename.data, 
                user_id = g.user.id, shared = SHARED )
            db.session.add(newbike)
            db.session.commit()
            flash('Your new bike has been created')
            return redirect(url_for('create_bike', nickname = nickname))
        else:
            flash("You have too many bikes")
    return render_template('create_bike.html',
        user = user,
        form = form
        )

更新-这是我的工作测试

^{pr2}$

Tags: formid应用程序dbifsessioncreatenickname
2条回答

你在正确的轨道上。在

在测试web应用程序时,检查html页面是否包含一些应该存在的数据片段。你只需要重复你创建的所有其他页面。您还可以添加测试,以查看创建用户是否遵循您设置的所有验证规则,或者用户名字段是否唯一等等

您的测试可能失败,因为该视图需要一个已登录的用户,并且由于您没有传递任何会话数据,所以您将被重定向到登录页(在您的视图中,data参数是表单数据,可在视图中的request.form中找到)。在你的断言之前,你可以看到在这一过程中,你的反应是什么:

print rv.status_code
print rv.location #None if not a redirect

有一些关于测试here中会话的文档,如果您像看上去那样使用Flask登录,this answer将向您展示如何设置会话,以便让您获得登录的用户

相关问题 更多 >

    热门问题