Flask test generator code review?

George Fischhof george at fischhof.hu
Mon Apr 30 09:48:53 EDT 2018


2018-04-18 12:41 GMT+02:00 Albert-Jan Roskam <sjeik_appie at hotmail.com>:

> Hi,
>
> I am writing my first unittests for a Flask app. First modest goal is to
> test whether a selected subset of the templates return the expected status
> 200.
> I am using a nose test generator in a class for this. Is the code below
> the correct way to do this? And is there a way to dynamically set the
> docstring of test_generator? This would make the nosetests output a bit
> more understandable.
>
> Thanks!
> Albert-Jan
>
> import os
> import sys
> from os.path import splitext
> from http import HTTPStatus as status
>
> import nose
>
> from MyFabulousApp import app
>
> app.testing = True
> template_folder = app.config['TEMPLATE_FOLDER']
>
>
> class Test_MyFabulousApp_HTTP_Status_OK:
>
>     def __init__(self):
>         self.setup()   # with unittest, setUp is called automatically, but
> not with nose
>
>     def setup(self):
>         self.client = app.test_client()
>         self.client.post('/login', follow_redirects=True)
>
>     def teardown(self):
>         self.client.post('/logout', follow_redirects=True)
>
>     def test_generator(self):
>         """Does template return HTTP Status 200?"""
>         def the_test(self, template):
>             # the following line throws an error: AttributeError:
> attribute '__doc__' of 'method' objects is not writable
>             #self.test_generator.__doc__ = 'Does template "%s" return HTTP
> Status 200?' % template
>             respons = self.client.get('/' + template)
>             actual = respons.status_code
>             desired = status.OK.value
>             assert actual == desired, \
>                'Template "%s" returns status code %d' % (template, actual)
>         templates = [splitext(item)[0] for item in
> os.listdir(template_folder)]
>         for template in templates:
>             yield the_test, self, template
>
>
> if __name__ == '__main__':
>     nose.run(defaultTest=__name__, argv=[sys.argv[0], '__main__',
> '--verbosity=2'])
> --
> https://mail.python.org/mailman/listinfo/python-list
>


Hi,

maybe you should check PyTest
https://docs.pytest.org/en/latest/

and Flas testing turorial:
http://flask.pocoo.org/docs/1.0/testing/


BR,
George


More information about the Python-list mailing list