Display python unittest results in nice, tabular form
Solution 1
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.
Solution 2
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:
The source code is at https://gist.github.com/viniciusd/73e6eccd39dea5e714b1464e3c47e067
I shall rewrite it from scratch soon but keeping the output format.
Solution 3
Take a look at Twisted's Trial.
By default, it uses the TreeReporter
test runner, which looks like:
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 subclassingtwisted.trial.unittest.TestCase
. This provides a few more assertion methods.It includes the option to generate statement coverage for your tests.
Adam Matan
Team leader, developer, and public speaker. I build end-to-end apps using modern cloud infrastructure, especially serverless tools. My current position is R&D Manager at Corvid by Wix.com, a serverless platform for rapid web app generation. My CV and contact details are available on my Github README.
Updated on May 28, 2020Comments
-
Adam Matan almost 4 years
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.