Slide 1

Slide 1 text

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

Slide 31

Slide 31 text

QUESTIONS? 31 Sunday, November 11, 12