I’m annoyed with Python’s ternary operator

The ternary operator is a way to concisely say: “If test, then a, else b“, with the value of the statement being the value of a or b. language how to say it C test ? a : b C++ test ? a : b javaScript test ? a : b Perl (not perl 6) test ?...

July 2, 2013 · 1 min · Brian

pytest support for unittest style fixtures

As with nose, I ran pytest on the tests written to demonstrate unittest fixtures. Some surprises. There are some differences, which I’ll list out in this post. Before we get started, I’d like to express that I’m a huge fan of pytest. The cool stuff in pytest far outweighs any invonvenience that it doesn’t behave exactly like unittest. However, it’s good to know what the differences are, so you can be informed about how your unittests will run under pytest. ...

June 26, 2013 · 6 min · Brian

nose support for unittest style fixtures

I ran nosetests on the tests written for unittest from my unittest fixture post. No surprises. Nose supports unittest style fixtures: module: setUpModule()/tearDownModule() class: setUpClass()/tearDownClass() around methods: setUp()/tearDown() add cleanup functions: addCleanup() called from setUp() and from a test skipping tests dynamically: testSkip() called from setUp() error conditions: don’t run the test or the matching tearDown if setUp fails. This is true for module, class, and method fixtures. Here’s the output....

June 25, 2013 · 2 min · Brian

Run a single test class with unittest, nosetests, py.test

I’ve got the test code from my unittest fixture syntax and flow reference, and I want to try to run one class, say TestSkip from unittest, nosetests, and pytest, to compare the the control flow. Therefore, I need for each framework: The option to make it as quiet as possible (-q for all of them) The option to turn off output capture (-s works for both pytest and nose, not needed for unittest) The way to call an individual class (this is where they all differ....

June 19, 2013 · 1 min · Brian

What happens when unittest fixtures fail

In unittest fixture syntax and flow reference, I only presented fixture methods and functions that threw no exceptions. However, in real production code, it is entirely possible for something to go wrong when setting up test fixtures. This post is simply do demonstrate exactly what happens to the flow of your test code when an exception is thrown in a fixture function. And, while I’m at it, I may as well demo the normal control flow when a test fails, asserts, or throws an exception....

June 17, 2013 · 6 min · Brian

unittest fixture syntax and flow reference

This post contains examples of how unittest test fixture functions and methods are written, and in what order they run. It may seem like a long post, but it’s mostly code examples and example output. I want this to be a useful reference for both the syntax and flow of unittest fixtures. If I missed something, please comment below, and I’ll update the post. Intro: Software Test Fixtures The term test fixtures really means two things....

June 16, 2013 · 6 min · Brian

for pip proxy, use dev instead of 1.3.1

pip pip is hands down my favorite way to install stuff in Python. If you need to use it behind a firewall, download ...

June 3, 2013 · 2 min · Brian

How not to test, part 1

or Complete coverage testing or More is Better testing The setup For the sake of this post, let’s say I’ve got a Python package that needs testing. It’s written completely in Python It has a specification fully describing the API The specification is so complete that it also covers behaviors and side effects The API is the only interface this program exposes It was written by us It was written recently It only uses base Python Therefore:...

May 21, 2013 · 5 min · Brian

pytest debug print logging in real time

There are many circumstances where it’s really great to display the output of a test while a test is running, and not wait until the end. In this post, I’m going to describe my method for getting around pytest’s output capture mechanism, so that I can see my debug print/logging statements in real time. Fast and Quick? Not always Unit tests should run fast so the entire test suite can be run quickly....

April 4, 2013 · 6 min · Brian

regex search and replace example scripts

Search and replace is such a common task that it should be a tool that’s in every command line script author’s toolbox. There are probably endless solutions to the problem. I’ve put together my standard methods for tackling the problem. I’ll also show similar Perl versions, mainly for comparisons. ...

February 8, 2013 · 4 min · Brian