Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Display python unittest results in nice, tabular form [closed]

I am writing a Pythonic tool which validates the correctness of a certain system. Each validation is written as a Python unittest, and the report looks like:

test_exclude_list_not_empty (__main__.TestRepoLists)
Assert the the exclude list is not empty ... ok
test_include_list_not_empty (__main__.TestRepoLists)
Assert the the include list is not empty ... ok
test_repo_list_not_empty (__main__.TestRepoLists)
Assert the the repo list is not empty ... ok

In my opinion, this format is hard to read, especially for non-Pythonists. Is there any report generator that can generate a report in a nice, tabular form, e.g.:

+----------------------------------------------------------------+-----------+
| Test                                                           |  Status   |
+----------------------------------------------------------------+-----------+
| Assert the the exclude list is not empty                       |  OK       |
| Assert the the include list is not empty                       |  OK       |
| Assert the the repo list is not empty                          |  OK       |
| All the items in the include list should be in the repo list   |  OK       |
+----------------------------------------------------------------+-----------+

Clarification The test suite runs on a remote terminal, so I prefer command line reporting tools.

like image 495
Adam Matan Avatar asked Jun 18 '13 07:06

Adam Matan


3 Answers

This is not exactly what you are asking, but there are several options for having a readable test output there:

  • HTMLTestRunner generates easy to use HTML test reports in a tabular form. Here's a sample report.
  • nose-html-output plugin for nose test runner
  • unittest-xml-reporting - PyUnit-based test runner with JUnit like XML reporting
  • nose with --with-xunit option will produce junit xml style reports that are easy to read and convert

Also see:

  • How to produce html unit test output in Python?
  • Python Unittest Reporting in HTML
  • unittest colored output (coloring the output can make results readable too)

If you want to see test results in a tabular form in the console anyway, I think that a good idea would be to write your own nose plugin or test runner based on unittest.TestProgram as it was done in HTMLTestRunner.

Hope that helps.

like image 50
alecxe Avatar answered Nov 05 '22 19:11

alecxe


I would like to add my information as a comment into alecxe's answer, but I do not have enough reputation for that.

In case of someone still looking for an answer, I forked HTMLTestRunner into a simple TestRunner, which has a tabular, colored, terminal-friendly output. This is a sample of its output:

Example

The source code is at https://gist.github.com/viniciusd/73e6eccd39dea5e714b1464e3c47e067

I shall rewrite it from scratch soon but keeping the output format.

like image 37
Vinicius Dantas Avatar answered Nov 05 '22 19:11

Vinicius Dantas


Take a look at Twisted's Trial.

By default, it uses the TreeReporter test runner, which looks like:

Trial's reporting

It has the following:

  • It's a command line report, just run:

    trial test_name.py

  • Colored output: red for failure, green for success

  • The report uses a tree like structure. It displays the tests under the TestCases they belong, allowing you to quickly traverse the results to find a specific test. (Although it provides a couple of more reports).

  • It also includes a test library, derived from Python's unittest.TestCase. You can use this library by subclassing twisted.trial.unittest.TestCase. This provides a few more assertion methods.

  • It includes the option to generate statement coverage for your tests.

like image 3
Carlos Avatar answered Nov 05 '22 20:11

Carlos