Building data-driven web apps with Pyramid and SQLAlchemy Transcripts
Chapter: Testing web apps
Lecture: Organizing your tests

Login or purchase this course to watch this video and the rest of the course contents.
0:00 We've gone through several rounds
0:01 of reorganizing our code in our pyramid web application.
0:05 And it may be sometimes hard to see the value in this
0:09 but as your app grows and grows the better organized it is
0:14 the less weight you get put onto you
0:18 conceptually to try to keep all that in your head.
0:21 So really important organization, makes a lot of sense.
0:24 We saw that we did this with the templates
0:26 we did this with controllers
0:27 we did this with the view models.
0:30 Guess what? We're going to do it with tests as well.
0:32 And because the tests usually have to do with either
0:36 a URL, the view model or the view method
0:40 these are all grouped into controllers so far.
0:43 So, it makes sense to go ahead and group them by controller.
0:46 So, it doesn't have to be this way
0:49 but it certainly seems like a decent way to get started
0:52 and you can do additional organizing if you want.
0:55 So we also have a HomeController and a PackageController
0:59 so we have their respective tests as well.
1:01 We didn't write any for the CMS stuff yet so none of those.
1:05 Now, another thing that's really helpful is if we have a site map in.
1:10 We'll talk about this at the end of this chapter
1:13 having a site map. Which is basically just a XML document that lists
1:18 all of the publicly accessible URLs on your site
1:22 even if they're not directly linked
1:23 so that things like Google and Bing can find
1:25 and search your site.
1:27 We could leverage that site map to cover a bunch of cases.
1:31 You'd be really surprised how often you get hard failures
1:35 instead of what you might consider a soft failure
1:37 if something goes wrong.
1:39 If I request the package page but for some reason
1:41 the package query is wrong?
1:43 Probably I'm going to get just nothing back
1:45 in which case the template is going to crash
1:47 or something else is going to crash because
1:49 the None type doesn't have whatever they're trying to do.
1:52 So, simply requesting every page on your site
1:55 and just checking that those come back with success codes
1:58 and not failure codes?
1:59 That's really actually pretty valuable.
2:02 You can test a lot of semi important
2:04 not super important things that way.
2:07 All right, so we'll talk about that as well
2:09 but we're going to focus on testing the internal logic
2:12 of these various controllers, view models and so on.
2:14 And here's an organization that will help us
2:17 keep that all straight and clean.