Flask-WTF / WTForms с Unittest не выполняет проверку, но работает без Unittest

Когда я обычно запускаю приложение и выполняю вход в браузер, он работает. Но с Unittest он не войдет в систему …., он снова возвращает страницу входа в систему.
Оба «print rv.data» просто распечатывают содержимое страницы входа, но должны печатать содержимое индексной страницы, которое является login_required
если это помогает, я использую SQLAlchemy как ORM. Кто-нибудь знает, что может быть проблемой? Если вам понадобится какой-либо код, я предоставлю. Я попытался найти аналогичный вопрос здесь, но не нашел.

#!flask/bin/python import os import unittest from config import basedir from app import app, db from app.models import User,Exam,Attempt,Subject class TestCase(unittest.TestCase): def setUp(self): app.config['TESTING'] = True app.config['CSRF_ENABLED'] = False app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'test.db') self.app = app.test_client() db.create_all() def tearDown(self): db.session.remove() db.drop_all() def login(self, username, password): return self.app.post('/login', data=dict( username=username, password=password ), follow_redirects=True) def test_users(self): u = User(username = 'gaucan', password = 'gau') db.session.add(u) db.session.commit() rv = self.login('gaucan','gau') print rv.data rv = self.app.get('/',follow_redirects=True) print rv.data if __name__ == '__main__': unittest.main() 

Я добавил функцию входа в систему для просмотра …

 @app.route('/login', methods = ['GET', 'POST']) def login(): if g.user is not None and g.user.is_authenticated(): return redirect(url_for('index')) form = LoginForm() if form.validate_on_submit(): user = User.query.filter_by(username = form.username.data).first() if user is not None and form.password.data == user.password: login_user(user) flash("Logged in successfully.") return redirect(request.args.get('next') or url_for('index')) flash('Invalid password') return render_template('login.html', title = 'Sign In', form = form) 

здесь обратная линия из строки выше form.validate_on_submit

 > /home/gaucan/webdev/projekt2/app/views.py(131)login() -> if form.validate_on_submit(): (Pdb) bt /home/gaucan/webdev/projekt2/shit.py(41)<module>() -> unittest.main() /usr/lib64/python2.7/unittest/main.py(95)__init__() -> self.runTests() /usr/lib64/python2.7/unittest/main.py(232)runTests() -> self.result = testRunner.run(self.test) /usr/lib64/python2.7/unittest/runner.py(151)run() -> test(result) /usr/lib64/python2.7/unittest/suite.py(70)__call__() -> return self.run(*args, **kwds) /usr/lib64/python2.7/unittest/suite.py(108)run() -> test(result) /usr/lib64/python2.7/unittest/suite.py(70)__call__() -> return self.run(*args, **kwds) /usr/lib64/python2.7/unittest/suite.py(108)run() -> test(result) /usr/lib64/python2.7/unittest/case.py(433)__call__() -> return self.run(*args, **kwds) /usr/lib64/python2.7/unittest/case.py(369)run() -> testMethod() /home/gaucan/webdev/projekt2/shit.py(35)test_users() -> rv = self.login('gaucan','gau') /home/gaucan/webdev/projekt2/shit.py(28)login() -> ), follow_redirects=True) /home/gaucan/webdev/projekt2/flask/lib/python2.7/site-packages/werkzeug/test.py(771)post() -> return self.open(*args, **kw) /home/gaucan/webdev/projekt2/flask/lib/python2.7/site-packages/flask/testing.py(108)open() -> follow_redirects=follow_redirects) /home/gaucan/webdev/projekt2/flask/lib/python2.7/site-packages/werkzeug/test.py(735)open() -> response = self.run_wsgi_app(environ, buffered=buffered) /home/gaucan/webdev/projekt2/flask/lib/python2.7/site-packages/werkzeug/test.py(658)run_wsgi_app() -> rv = run_wsgi_app(self.application, environ, buffered=buffered) /home/gaucan/webdev/projekt2/flask/lib/python2.7/site-packages/werkzeug/test.py(854)run_wsgi_app() -> app_iter = app(environ, start_response) /home/gaucan/webdev/projekt2/flask/lib/python2.7/site-packages/flask/app.py(1836)__call__() -> return self.wsgi_app(environ, start_response) /home/gaucan/webdev/projekt2/flask/lib/python2.7/site-packages/flask/app.py(1817)wsgi_app() -> response = self.full_dispatch_request() /home/gaucan/webdev/projekt2/flask/lib/python2.7/site-packages/flask/app.py(1475)full_dispatch_request() -> rv = self.dispatch_request() /home/gaucan/webdev/projekt2/flask/lib/python2.7/site-packages/flask/app.py(1461)dispatch_request() -> return self.view_functions[rule.endpoint](**req.view_args) > /home/gaucan/webdev/projekt2/app/views.py(131)login() -> if form.validate_on_submit(): (Pdb) 

  • SQLAlchemy: Знание имен полей и значений объекта модели?
  • Максимальное время выполнения для функции в python (колба)
  • Flask: Как управлять различными базами данных среды?
  • С округлением до третьей десятичной точки Место в Python
  • Как реализовать __delitem__ для обработки всех возможных сценариев среза?
  • python все возможные комбинации 0,1 длины k
  • Как len (generator ())
  • Как установить self.maxDiff в нос, чтобы получить полный выход diff?
  • One Solution collect form web for “Flask-WTF / WTForms с Unittest не выполняет проверку, но работает без Unittest”

    Вы должны установить WTF_CSRF_ENABLED не CSRF_ENABLED – прямо сейчас Flask-WTForms пытается проверить ваш токен CSRF, но вы не предоставляете его:

     class TestCase(unittest.TestCase): def setUp(self): app.config['TESTING'] = True # Wrong key: # app.config['CSRF_ENABLED'] = False # Right key: app.config['WTF_CSRF_ENABLED'] = False 
    Python - лучший язык программирования в мире.