웹 인터페이스의 양식을 수동으로 제출해도 실제로 작동하지 만 다음 테스트 코드는 통과하지 못합니다. 테스트 클라이언트는 register_view
URL에 게시물을 가지고 있으며, 200 OK 응답을 반환 한 후플라스크 테스트 클라이언트 게시물이 데이터베이스에 개체를 생성하지 않습니다.
import os
from flask.ext.testing import TestCase
from flask import url_for
from config import _basedir
from app import app, db
from app.users.models import User
class TestUser(TestCase):
def create_app(self):
"""
Required method. Always implement this so that app is returned with context.
"""
app.config['TESTING'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(_basedir, 'test.db')
app.config['WTF_CSRF_ENABLED'] = False # This must be disabled for post to succeed during tests
self.client = app.test_client()
ctx = app.app_context()
ctx.push()
return app
def setUp(self):
db.create_all()
#pass
@app.teardown_appcontext
def tearDown(self):
db.session.remove()
db.drop_all()
#pass
def test_admin_home(self):
# url is the admin home page
url = url_for('admin.index')
resp = self.client.get(url)
self.assertTrue(resp.status_code == 200)
def test_admin_registration(self):
url = url_for('admin.register_view')
data = {'username': 'admin', 'email': '[email protected]', 'password': 'admin'}
resp = self.client.post(url, data)
self.assertTrue(resp.status_code == 200)
u = User.query.filter_by(username=u'admin').first()
self.assertTrue(u.username == 'admin') # <----- This fails. Why?
, 나는 테스트 데이터베이스에서 '관리자'사용자를 검색하는 데 실패합니다. 이게 왜 그렇게?
다음은 뷰 코드 (이 플라스크 관리이다) 지금까지
from flask import request
from flask.ext.admin import expose, AdminIndexView, helpers
from app.auth.forms import LoginForm, RegistrationForm
from app.users.models import User
from app import db
class MyAdminIndexView(AdminIndexView):
@expose('/', methods=('GET', 'POST'))
def index(self):
# handle user login
form = LoginForm(request.form)
self._template_args['form'] = form
return super(MyAdminIndexView, self).index()
@expose('/register/', methods=('GET', 'POST'))
def register_view(self):
# handle user registration
form = RegistrationForm(request.form)
if helpers.validate_form_on_submit(form):
user = User()
form.populate_obj(user)
db.session.add(user)
db.session.commit()
self._template_args['form'] = form
return super(MyAdminIndexView, self).index()
어떻게 실패합니까? 보기 코드를 공유 할 수 있습니까? – DazWorrall
보기 코드가 추가되었습니다. "self.assertTrue (u.username == 'admin')와 함께 실패합니다. AttributeError : 'NoneType'객체에 'username'속성이 없습니다." –