2018-04-18 12:41 GMT+02:00 Albert-Jan Roskam <sjeik_ap...@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 -- https://mail.python.org/mailman/listinfo/python-list