Thursday, March 3, 2011

Stepping up Django Efforts

Today we stepped it up a bit. Jeff Langr and I worked on our little project (shhh! it's a secret) and spent much of the day in django learning to test things. It cured a number of my developers' diseases and we got a bit done.

We started out trying to use Lettuce, which is a good idea and worth improving. We got a couple of tests working, using the client to send get results from the server and BeautifulSoup to parse the returned html. It was mostly a good experience, but then we found out that our handlers weren't specific to the scenario or the feature or even the file or directory. If you register a 'before' it's 'before' everything (it seems). Still we got some experience with it, and I think it'a great idea. With some scoping rules attached it would be totally awesome for ATDD, and I dig that it's pure python so you don't have to have a bunch of different languages & tools to do the work. It's a good start.

We picked up with more standard unit tests after lunch, calling the view function and letting it do the work. We figure that we don't really have to do a lot of through-the-browser testing, since django works pretty well and we're going to demo features before calling them 'done.' Heck, we'll probably try a few more ATDD tools before we're done.

We made a little progress on another page, and started to refactor it into a decent shape. I'll probably go on with that on my own a while. I think I have a good handle on this now, but will still do a fair amount of experimenting before this is done.

For django, my feelings are mostly positive. It's simple enough, works, and is fairly logical. I have not come to terms with which libraries I have to import everything from, but otherwise am gaining fluency. I have much to learn. I really wish that the objects were mapped to the ORM instead of being instances and attributes of ORM classes. They've gone to some lengths to make it easy to work with ORM classes instead of easy separation, but they've done a good job.

More later.