Ranked in these QuestionsQuestion Ranking
Pro Flexible test case execution
The way tests are run is through:
if name == 'main':
unittest.main() builds a
TestSuite object that contains all the tests that have method names starting with "test", then a
TextTestRunnerwhich then executes each method and prints the results.
But individual test cases can be executed simply by specifying their names on the terminal:
python unittest_program.py testProgram.testGetFeedPostingHost
The default output is usually pretty concise, but it can be more verbose simply by adding a
-v flag in the end when calling the test from the command line.
So unittest can be considered pretty flexible when it comes to test case execution.
Pro Part of the Python standard library
PyUnit has been a part of the Python standard library since version 2.1 as the unittest module. This makes it widely available to developers without the need to install additional modules since it's coming out of the box with Python.
Pro Easy to use for people who are comfortable with testing in other languages
Since pyUnit is a derivative of xUnit and it's quite similar to other xUnit frameworks, it's quite easy for people with not much Python background to relate to.
Con The API can make the test code's intent hard to understand
Although unittest does not have a huge API that needs to be remembered, it has too much support for abstraction, this makes the test code intent's unclear.
Too much boilerplate code is needed.