Python と Flask は初めてですが、徐々に慣れてきました。私はアプリの構築にこれまで取り組んできましたが、ユニットテストを開始する必要があると考えています。私は本当にそれを理解することはできません。さまざまなドキュメント、投稿、および例を読みましたが、これを自分のコードに転送できないようです。誰かが私の関数の 1 つのテストを作成する方法を教えてくれれば、うまくいくことを願っています。この段階では、それを無視してアプリの構築を進めるのは非常に魅力的です。
@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
)
更新 - これが私の作業テストです
def test_create_bike(self):
u = User(nickname = 'john', email = 'john@example.com', account_type = "tester")
db.session.add(u)
db.session.commit()
# login user
with self.app as c:
with c.session_transaction() as sess:
sess['user_id'] = int(u.get_id())
# http://pythonhosted.org/Flask-Login/#fresh-logins
sess['_fresh'] = True
rv = c.post('/user/john/create_bike', data = dict(
bikename = 'your new bike',
user_id = sess['user_id'],
shared = 1
), follow_redirects = True)
assert 'Your new bike has been created' in rv.data