Guys, <br>
<br>
Our tests are not good enough. We recently changed the way we do string interpolation, and that had introduced a number of bugs that could have been avoided with proper testing.<br>
<br>
File "E:\bzr\openlp\trunk\openlp\plugins\songs\lib\<a href="http://mediaitem.py">mediaitem.py</a>", line 606, in generate_slide_data<br>
verse_def = '{tag}{label}'.format(tzg=verse_tag, text=verse[0]['label'])<br>
KeyError: 'tag'<br>
<br>
This is such a simple bug ("tag" vs "tzg"), and yet the tests don't pick it up. What use are our tests when they don't even pick up a bug like this? <br>
<br>
I've said it before and I'm going to say it again: it's time to step up our testing. What we have is not good enough. <br>
<br>
It's much easier to write years when you're writing a bunch of tests for a particular section of the code. This way you're familiar with the code when you're writing the tests and is easier to get your head around how to write the tests you need. Don't just write one small test that doesn't actually do anything. You're not making good use of your own time, and you're leaving OpenLP in the lurch. <br>
<br>
If you're struggling to test a piece of code, you probably need to refactor the code into smaller functions. Rather than passing global or class-level variables around, use function parameters. This makes your code easier to test. <br>
<br>
Use test coverage. If you're using nose, run it with coverage (instructions are on the wiki), if you're running nose 2, install python3-cov and it should be automatically enabled. Test coverage helps to gamify writing tests - you'd be surprised at how much of a kick you'll get out of writing tests. <br>
<br>
If you're unsure of anything, or need to learn how to use MagicMock and patch, don't hesitate to ask me.<br>
<br>
R. <br>
-- <br>
Sent from my Android device with K-9 Mail. Please excuse my brevity.