Предоставяне на необходимия код по-долу. Заявката за публикация, която правя в моя test_book_creation()
, трябва да създаде Book
запис, което не прави, защото validate_on_submit()
връща False
дори когато съм задал WTF_CSRF_ENABLED
конфигурационната променлива на приложението на False.
конфигурационен обект:
class TestConfig:
TESTING = True
WTF_CSRF_ENABLED = False
DEBUG = False
SECRET_KEY = os.environ.get('SECRET_KEY')
SQLALCHEMY_DATABASE_URI = os.environ.get('TEST_SQLALCHEMY_DATABASE_URI')
тестова функция:
def test_book_creation(self):
data = dict(book_count=2, title='A Book for Testing', author='tester',\
price=340,genre='Fiction',language_code='eng')
response = self.client.post('/book/new', content_type='multipart/form-data', data=data, follow_redirects=True)
num_books = Book.query.filter_by(title="A Book for Testing", authors="tester").count()
print('****************num_books****************', num_books) # this prints num_books = 0
books = Book.query.count()
print('****************books****************', books) # this prints books = 0
Функция за настройка на теста:
def setUp(self):
'''executed prior to each test'''
print('*************setUp***************')
# Create and setup the application
self.app = create_app(TestConfig)
print('*************self.app.config.get("WTF_CSRF_ENABLED")***************', self.app.config.get("WTF_CSRF_ENABLED"))
self.app_context = self.app.app_context()
self.app_context.push()
self.client = self.app.test_client()
# Setup the database
Book.__table__.drop(db.engine)
User.__table__.drop(db.engine)
Transaction.__table__.drop(db.engine)
Book.__table__.create(db.engine)
User.__table__.create(db.engine)
Transaction.__table__.create(db.engine)
# db.create_all()
# create a user
hashed_password = bcrypt.generate_password_hash('123').decode('utf-8')
user = User(username='test_user3', email='[email protected]', password=hashed_password)
db.session.add(user)
db.session.commit()
response = self.client.post('/login', content_type='multipart/form-data', data={'email':'[email protected]','password':'123', 'remember':0})
form.validate_on_submit()
във функцията на маршрут /book/new
връща False
, така че системата не изпреварва това.
Всяка помощ ще бъде оценена.