To explore the concepts of functional testing using python and python testing frameworks, I’m building a project to test, markdown.py on github.
In this post, I’m discussing the stub implementation that I will use to set up the testing frameworks.
I’ve got my markdown.py requirements written.
An initial set, at least. Enough to get me started.
I want to move on to explore testing frameworks and testing strategy.
But to do that, it will be helpful to have something to test. So I’m going to write a stub for my script. Something that has the right name and interface. I can use it just as I will use the completed script. It just doesn’t work yet.
What’s the stub have to do:
- be a callable command line script
- accept input through stdin
- accept a file name argument
- print at least something to stdout
That’s really it.
Now I can use this stub to look at test frameworks and start writing tests.
Markdown.py
So here is a reasonable stub.
# Markdown.py
# First attempt
# - just print whatever is passed in to stdin
# - if filename passed in, print file instead of stdin
import fileinput
for line in fileinput.input():
print line, # print the line, the comma says don't add a newline
I will go ahead and check this in to version control.
Next, a look at frameworks.
Normally, I’d already have a test framework chosen.
But that’s kind of the point of this blog. At least to some extent.
I’ll take a look at pytest, nose, and the built-in python unittest.
I know doctest is also available and built-in. However, I don’t think I’ll look at it for a general purpose functional test framework. This may be shortsighted. Please let me know if you think leaving it out is a mistake.