Testing python command line apps -- Running from within the projects w/o installing
self at gkayaalp.com
Sat Nov 2 09:37:16 CET 2013
> Testing at levels of abstraction above the unit is important, but
> Python's ‘unittest’ is not a good fit. You'll need a different tool.
> For behaviour testing, I recommend Behave, which lets you describe
> assertions in English and have them automatically tested
> For integration testing, I recommend an automated build system like
> Jenkins <URL:http://jenkins-ci.org/> which can get your full source
> tree, build it using your build system, and run all your arbitrary test
> For running arbitrary commands as tests, you might be interested in
> Atheist <URL:http://arco.esi.uclm.es/~david.villa/atheist/html/>. I
> haven't tried it.
Thank you Ben! I would never find these until I was desparate to do so.
Also, via these links, I have found pointers to many other useful things
too, namely behave4cmd (incubating, no code) and django-behave.
> > I write a secondary script, 'app_tester', which is similar to 'app',
> > but before running app.main.main, it inserts ~/app to the front of
> > sys.path.
> I think that's a poor solution. It's the worst of both worlds: you have
> a special-case tool, but one that doesn't actually test the application
> properly since it's not a very accurate representation of how the
> application will actually be installed. Better is simply using the build
> system to do a real, temporary install, and running the tests in there.
Yes, I better use virtualenvs for their purpose. I'll think of "edit -
install to virtualenv - test" cycle as "edit - compile - run" cycle for
AOT-compiled languages from now on. Or maybe I will use CI tools to
automate this, but I am to alien to CI to assert anything.
> \ “Odious ideas are not entitled to hide from criticism behind |
> `\ the human shield of their believers' feelings.” —Richard |
> _o__) Stallman |
> Ben Finney
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 836 bytes
Desc: Digital signature
More information about the Python-list