Testing via CircleCi
As I mentioned in my previous article, I was looking to write some tests for my Pelican site deployment via CircleCi.
I wasn’t looking for anything in depth, just a kind of placeholder test while I wet my feet. I had never written any sort of testing, and in all fairness this isn’t a particularly useful test. I just wanted a proof of concept.
So my updated circle.yml
looks like this:
dependencies:
override:
- pip install pelican markdown s3cmd requests
- git clone https://github.com/gilsondev/pelican-clean-blog.git && pelican-themes --install pelican-clean-blog
- echo -e "[default] \naccess_key = $S3CFG_ACCESS_KEY \nsecret_key = $S3CFG_SECRET_KEY \n" > /home/ubuntu/.s3cfg
test:
post:
- ./site_test.py
deployment:
aws:
branch: master
commands:
- make html
- make s3_upload
Notice, I have added requests
to the pip install, as the python script I have written requires it.
Next you will see the inclusion of test:
which specifies your tests and then the script site_test.py
that contains the test.
#!/usr/bin/env python
import unittest
import requests
class TestSite(unittest.TestCase):
def test_status(self):
r = requests.get('http://www.havingatinker.uk/')
self.assertEqual(r.status_code, 200)
if __name__ == '__main__':
unittest.main()
That is my extremely basic and pointless script that sees if the site havingatinker.uk
is returning a 200, if not it returns that the test failed. Fortunately it does, and the test passes successfully. You can see the output below:
./tests/site_test.py
.
----------------------------------------------------------------------
Ran 1 tests in 0.001s
OK
Conclusion#
Considering the whole point of testing is to catch anything before the changes go out, the test above isn’t much use. The whole point of testing is to make sure your changes don’t break your live environment before deploying which the current one isn’t doing.
A more worth while test might be to bring up a local webserver and test the generated content is as expected, or something to that effect. The main thing is that I now have something working. All my ramblings above are just proof of concept, and has given me a platform to write more tests in the future.
Hopefully this acts as a gateway drug into the world of testing…but we’ll just have to wait and see.
Shall keep you updated on the improved tests soon.