<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Handbook Troggle - Unit Tests</title> <link rel="stylesheet" type="text/css" href="../../css/main2.css" /> </head> <body><style>body { background: #fff url(/images/style/bg-system.png) repeat-x 0 0 }</style> <h2 id="tophead">CUCC Expedition Handbook</h2> <h1>Handbook Troggle - Unit Tests</h1> <h2>Troggle Unit Tests</h2> <p>We have a small suite of tests which are run manually by troggle programmers like this: <pre><code> troggle$ python manage.py test -v 1</code></pre> The test code is all in <a href="http://expo.survex.com/repositories/troggle/.git/tree/core/TESTS/tests.py"><var>troggle/core/TESTS/tests.py</var></a>. <p>The test 'test_page_expofile' checks that a particular PDF is being served correctly by the web server and that the resulting page is the correct length of 2,299,270 bytes: <pre><code> def test_page_expofile(self): # Flat file tests. response = self.client.get('/expofiles/documents/surveying/tunnel-loefflerCP35-only.pdf') self.assertEqual(response.status_code, 200) self.assertEqual(len(response.content), 2299270) </code></pre> <p>This test suite is part of <a href="https://docs.djangoproject.com/en/1.11/topics/testing/">the django test system</a> which is a very thin layer on top of the standard python library module <a href="https://docs.python.org/3/library/unittest.html#module-unittest">unittest</a>. One of the things this layer does is to ensure that all the settings are imported correctly, and it sets up a very fast in-memory sqlite database purely for tests. No tests are run with the real expo database. <p>The tests can be run at a more verbose level by setting the <var>-v 3</var> flag. <p>As yet we have no test database set up, so the in-memory database is entirely empty. <hr /> Go on to: <a href="trogarch.html">Troggle architecture</a><br /> Return to: <a href="trogintro.html">Troggle intro</a><br /> Troggle index: <a href="trogindex.html">Index of all troggle documents</a><br /><hr /> </body> </html>