TESTING DJANGO WITH
TRAVIS CI
1
Sunday, November 11, 12
Slide 2
Slide 2 text
• Python Developer at
• Twitter: @adammckerlie
• Everywhere else: silent1mezzo
ABOUT ME
2
Sunday, November 11, 12
Slide 3
Slide 3 text
SLIDES
bit.ly/UhvbjV
3
Sunday, November 11, 12
Slide 4
Slide 4 text
• Definitions
• Why you should test your code
• What parts of your code you should test
• Writing your first test
• Integrating Travis CI to automatically run your tests
OVERVIEW
4
Sunday, November 11, 12
Slide 5
Slide 5 text
UNIT TEST
• Tests one small section of code
• Focuses your code
• Fast
5
Sunday, November 11, 12
Slide 6
Slide 6 text
INTEGRATION TEST
• Tests that the whole system works (views, forms,
etc...)
• Slow
• Gives you a full picture of what’s happening
6
Sunday, November 11, 12
Slide 7
Slide 7 text
• Gives you confidence in your code
• Allows you to iterate faster
• Provides beginners an easy spot to code-dive
• Untested code is expensive
WHY YOU SHOULD WRITE TESTS
7
Sunday, November 11, 12
Slide 8
Slide 8 text
“CODE NOT TESTED IS
BROKEN BY DESIGN”
JACOB KAPLAN-MOSS
8
Sunday, November 11, 12
Slide 9
Slide 9 text
• Don’t test Django or Python’s built-in stuff
• Test your views, models, forms, management
commands, etc...
WHAT YOU SHOULD TEST
9
Sunday, November 11, 12
Slide 10
Slide 10 text
• Tests can go in models.py or tests.py
• Must subclass django.test.TestCase
• python manage.py test
WRITING YOUR FIRST TEST
10
Sunday, November 11, 12
Slide 11
Slide 11 text
• Every view should have this test
11
Sunday, November 11, 12
Slide 12
Slide 12 text
• Fixtures are serialized data that you can load.
• python manage.py dumpdata app_name > app_name/fixtures/file.json
USING FIXTURES
12
Sunday, November 11, 12
Slide 13
Slide 13 text
13
Sunday, November 11, 12
Slide 14
Slide 14 text
• After every commit
• Before you merge your branches into master
• Once you’ve deployed your code
WHEN SHOULD YOU TEST
14
Sunday, November 11, 12
Slide 15
Slide 15 text
WHAT IS TRAVIS-CI?
• Continuous Integration Testing
• Open Source
• https://github.com/travis-ci
15
Sunday, November 11, 12
Slide 16
Slide 16 text
+ =
16
Sunday, November 11, 12
Slide 17
Slide 17 text
HOW DOES IT WORK?
• Sign up with your github account
• Specify repositories
• Include a .travis.yml file
• Change/commit/push code
• Tests run automagically
17
Sunday, November 11, 12
Slide 18
Slide 18 text
18
Sunday, November 11, 12
Slide 19
Slide 19 text
.travis.yml
19
Sunday, November 11, 12
Slide 20
Slide 20 text
Environment Variables
20
Sunday, November 11, 12
Slide 21
Slide 21 text
Using Databases
21
Sunday, November 11, 12
Slide 22
Slide 22 text
PULL REQUESTS
• Test Pull Requests before they’re merged to master
• Notifications of running tests
• Notifications of successful tests
22
Sunday, November 11, 12
Slide 23
Slide 23 text
23
Sunday, November 11, 12
Slide 24
Slide 24 text
24
Sunday, November 11, 12
Slide 25
Slide 25 text
before/after_script
25
Sunday, November 11, 12
Slide 26
Slide 26 text
NOTIFICATIONS
26
Sunday, November 11, 12
Slide 27
Slide 27 text
Email Notifications
27
Sunday, November 11, 12
Slide 28
Slide 28 text
IRC Notifications
28
Sunday, November 11, 12
Slide 29
Slide 29 text
Webhook Notifications
29
Sunday, November 11, 12
Slide 30
Slide 30 text
FINAL TIPS
• [ci skip]
• https://secure.travis-ci.org/[YOUR_GITHUB_USERNAME]/
[YOUR_PROJECT_NAME].png
• travis-lint
30
Sunday, November 11, 12