Как мне пройти форму html в почтовом запросе на flask модульный тест? - PullRequest
1 голос
/ 26 апреля 2020

Модульный тест:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...