Source code for testing
# -*- coding: utf-8 -*-
"""
More useful TestCase for tests.
Simple basic TestCase for your tests. Note, that `nose` test runner is used (it's really good)::
(flaskit)MacBook-Pro-Roman:flaskit semirook$ nosetests
...
----------------------------------------------------------------------
Ran 3 tests in 0.476s
OK
:copyright: \(c) 2012 by Roman Semirook.
:license: BSD, see LICENSE for more details.
"""
from flask.ext.testing import TestCase
from base import User
from helpers import AppFactory
from settings import TestingConfig
from ext import db
[docs]class KitTestCase(TestCase):
[docs] def create_app(self):
return AppFactory(TestingConfig).get_app(__name__)
[docs] def setUp(self):
db.create_all()
self.user = User(username='John Doe', email='john@doe.com', password='test')
self.user.save()
[docs] def tearDown(self):
db.session.remove()
db.drop_all()
[docs] def assertContains(self, response, text, count=None,
status_code=200, msg_prefix=''):
"""
Asserts that a response indicates that some content was retrieved
successfully, (i.e., the HTTP status code was as expected), and that
``text`` occurs ``count`` times in the content of the response.
If ``count`` is None, the count doesn't matter - the assertion is true
if the text occurs at least once in the response.
"""
if msg_prefix:
msg_prefix += ": "
self.assertEqual(response.status_code, status_code,
msg_prefix + "Couldn't retrieve content: Response code was %d"
" (expected %d)" % (response.status_code, status_code))
real_count = response.data.count(text)
if count is not None:
self.assertEqual(real_count, count,
msg_prefix + "Found %d instances of '%s' in response"
" (expected %d)" % (real_count, text, count))
else:
self.assertTrue(real_count != 0,
msg_prefix + "Couldn't find '%s' in response" % text)