Модульный тест:
self.test_farm = {
'name': 'Test Farm Name',
'address': 'Test Address',
'city': 'Test City'
}
def test_post_create_farm(self):
total_farms_before = len(Farm.query.all())
res = self.client().post(
'/farms/farm',
self.test_farm,
headers={'Authorization': self.administrator_bearer}
)
total_farms_after = len(Farm.query.all())
self.assertEqual(res.status_code, 200)
self.assertEqual(total_farms_before, total_farms_after - 1)
Это конечная точка:
@app.route('/farms/farm', methods=['POST'])
@requires_auth('edit:farm')
def create_farm_submission():
try:
farm = Farm(
name=request.form.get('name'),
address=request.form.get('address'),
city=request.form.get('city')
)
db.session.add(farm)
db.session.commit()
flash('Farm ' + request.form.get('name') + ' was successfully listed!')
except SQLAlchemyError as e:
flash('An error occured. Farm ' + request.form.get('name') + ' could not be listed!')
db.session.rollback()
return e
finally:
db.session.close()
return redirect(url_for('farms'))
Это ошибка, которую я получаю в bash при запуске теста. Похоже, он не может передать информацию из формы как json, что имеет смысл, потому что это не json, но я не знаю, как передать ее как форму:
$ py test_application.py
C:\Python38\lib\site-packages\sqlalchemy\util\langhelpers.py:253: SADeprecationWarning: The 'postgres' dialect name has been renamed to 'postgresql'
loader = self.auto_fn(name)
ERROR:application:Exception on /farms/farm [POST]
Traceback (most recent call last):
File "C:\Python38\lib\site-packages\flask\app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "C:\Python38\lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Python38\lib\site-packages\flask_cors\extension.py", line 161, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "C:\Python38\lib\site-packages\flask\app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Python38\lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\Python38\lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Python38\lib\site-packages\flask\app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\Victor\desktop\full_stack_developer\01_apps\fsdn-farm-shop\auth.py", line 170, in wrapper
return f(*args, **kwargs)
File "C:\Users\Victor\desktop\full_stack_developer\01_apps\fsdn-farm-shop\application\routes.py", line 82, in create_farm_submission
flash('Farm ' + request.form.get('name') + ' was successfully listed!')
TypeError: can only concatenate str (not "NoneType") to str
E