Я пытаюсь написать тест для какой-либо формы, которая записывает данные в мою базу данных. Я не знаю, почему это не работает.
route:
@admin.route('/session/new', methods=['POST', 'GET']) @login_required def new_session():
form = AddSession()
if form.validate_on_submit():
print(form.name.data)
print(request)
add_session = Session(name=form.name.data,
start_date=form.start_date.data,
end_date=form.end_date.data)
db.session.add(add_session)
db.session.commit()
flash('A session has been successfully added!', 'success')
return redirect(url_for('admin.sessions_overview'))
return render_template('sessions/new_session.html', title='Add Session', form=form)
test:
class FlaskClientTestCase (unittest .TestCase):
def setUp(self):
self.app = create_app('testing')
self.app_context = self.app.app_context()
self.app_context.push()
db.create_all()
populate_db(db)
self.client = self.app.test_client(use_cookies=True)
def tearDown(self):
db.session.remove()
db.drop_all()
self.app_context.pop()
def test_new_session(self):
response = self.client.post('/login', data={
'username': 'joshn',
'password': '123'
}, follow_redirects=True)
self.assertEqual(response.status_code, 200)
session_data = {
'name': 'test_session',
'start_date': date(2019, 7, 20),
'end_date': date(2019, 7, 21)
}
response = self.client.post('/session/new', data={
'name': 'test_session',
'start_date': date(2019, 7, 20),
'end_date': date(2019, 7, 21)
})
self.assertEqual(response.status_code, 200, "Form wasn't submitted") # Checks the form submission was valid
test_s = Session.query.filter_by(name='test_session').first()
self.assertIsNotNone(test_s, "Session wasn't added to database")
self.assertEqual(session_data['name'], test_s.name, "Data wasn't written properly to db")
self.assertEqual(session_data['start_date'], test_s.start_date, "Data wasn't written properly to db")
self.assertEqual(session_data['end_date'], test_s.end_date, "Data wasn't written properly to db")
сообщение об ошибке:
Трассировка (последний последний вызов): файл "tests / test_admin.py", строка 56, в test_new_session self.assertIsNotNone (test_s, «Сеанс не был добавлен в базу данных») AssertionError: неожиданно Нет: Сессия не была добавлена в базу данных
РЕДАКТИРОВАТЬ: хорошо, я добавил еще один к маршруту, но теперь я получаю код ответа 400, и когда я проверяю, почтовый запрос был пуст.
Обновленный маршрут:
def new_session():
form = AddSession()
if form.validate_on_submit():
print(form.name.data)
print(request)
add_session = Session(name=form.name.data,
start_date=form.start_date.data,
end_date=form.end_date.data)
db.session.add(add_session)
db.session.commit()
flash('A session has been successfully added!', 'success')
return redirect(url_for('admin.sessions_overview'))
else:
print(request.method)
if request.method == 'POST':
args = request.args
print(args)
add_session = Session(name=args['name'],
start_date=args['start_date'],
end_date=args['end_date'])
db.session.add(add_session)
db.session.commit()
return Response(status=302)
return render_template('sessions/new_session.html', title='Add Session', form=form)
Сообщение:
Traceback (most recent call last):
File "tests/test_admin.py", line 53, in test_new_session
self.assertEqual(response.status_code, 302, "Form wasn't submitted") # Checks the form submission was valid
AssertionError: 400 != 302 : Form wasn't submitted