Hi,

I invested last 2 week on some research on Testing frameworks and Security
Certificates. CA Bundles and  Pem files were something I had no experience,
therefor I studied on that. Studied Java security API and Stratos's Java
CLI's Certificate handling codes ( Keystores, etc ).

*Testing frameworks*

1. Unittest ( docs.python.org/2/library/unittest.html ) [ PSF(
GPL-compatible ) ]

Python's unit testing module since 2.7. Very similar to JUnit for
Java. Gives very descriptive outputs when found assertion errors.

2. Unittest2 ( pypi.python.org/pypi/unittest2 ) [ BSD ]

unittest2 is a backport of the new features added to the unittest testing
framework in Python 2.7 and onwards. Supports back to Python 2.4+.

3. PyTest ( pytest.org/ ) [ MIT ]

Very popular unit testing tool which is an alternative to Python’s standard
unittest module. Gives very descriptive outputs when found assertion
errors. Integrates nicely with setup.py. Python 2 and 3 compatible.

4. Nose ( nose.readthedocs.org/en/latest ) [ LGPL ]

Nose extends unittest to make testing easier. Same as PyTest.
Python 2 and 3 compatible.

5. Tox ( tox.readthedocs.org/en/latest/ ) [ MIT ]

Tox is a generic virtualenv management and test command line tool. We can
setup several Python virtual environments and run our tests on those
environments. This is a very useful tool to ensure the compatibility with
Python 2 and Python 3 versions. PyTest,  nose and unittest modules are
compatible with tox. Able to easily integrate with continuous integration
servers like Jenkins.

6. Doctest ( docs.python.org/2/library/doctest.htmlt ) [ PSF(
GPL-compatible ) ]

 Python module that checks for interactive Python sessions in docstrings,
and then executes those sessions to verify that they work exactly as shown.

7. Atheist ( arco.esi.uclm.es/~david.villa/atheist/html/  ) [ GFDL ]

A great tool for command line testing, it issues the commands to the
underlying shell and compares the output with the intended output. Now
discontinued but bug-maintained.

8. Prego ( bitbucket.org/arco_group/prego ) [ GPLv3+ ]

Successor of Atheist, which provides support to run shell commands on
background, send signal to processes, set assertions on command stdout or
stderr, etc. Very suitable in CLI testing tasks.

9. ScriptTest ( pythonpaste.org/scripttest/ ) [  MIT-style permissive
license ]

Something like Prego, but seems less features.

10. Behave ( jenisys.github.io/behave.example/ ) [ BSD ]

 A BDD framework and a cucumber-clone for Python. Cucumber is a nice way
for feature testing where we define the features in simple English and that
will become the tests.


I definitely will be using Tox because it makes us test the Python CLI on
different Python versions. But Tox alone can not test the CLI. We have to
us some other testing framework on Tox. I'm wondering what to use where. We
can use PyTest for unit test Stratos.py which calls the Stratos RESTAPI.
But we have to test the CLI functionalities also, using some kind of CLI
testing tool. I think I need some advice here :)

Meanwhile, I continued implementing other "list" CMD actions in Python CLI.
I see some repetition in error code handling stuffs, I'm thinking of a way
to write a general method for error handling and error reporting.

Reply via email to