A unit test runner for Python, and generate HTML reports.
Project description
# PyUnitReport
banrieen_PyUnitReport modified from PyUnitReport is a unittest test runner that save test results in Html files, for human readable presentation of results.
## Installation
```bash
$ pip install banrieen_PyUnitReport
```
## Usage
### testcase
```python
from pyunitreport import HTMLTestRunner
import unittest
class TestStringMethods(unittest.TestCase):
""" Example test for HtmlRunner. """
def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO')
def test_isupper(self):
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper())
def test_split(self):
s = 'hello world'
self.assertEqual(s.split(), ['hello', 'world'])
# check that s.split fails when the separator is not a string
with self.assertRaises(TypeError):
s.split(2)
def test_error(self):
""" This test should be marked as error one. """
raise ValueError
def test_fail(self):
""" This test should fail. """
self.assertEqual(1, 2)
@unittest.skip("This is a skipped test.")
def test_skip(self):
""" This test should be skipped. """
pass
if __name__ == '__main__':
unittest.main(testRunner=HTMLTestRunner(output='example_dir'))
```
In most cases, you can use `PyUnitReport` with `unittest.main`, just pass it with the `testRunner` keyword.
For `HTMLTestRunner`, the only parameter you must pass in is `output`, which specifies the directory of your generated report. Also, if you want to specify the report name, you can use the `report_name` parameter, otherwise the report name will be the datetime you run test. And if you want to run testcases in `failfast` mode, you can pass in a `failfast` parameter and assign it to be True.
Here is another way to run the testcases.
```python
from pyunitreport import HTMLTestRunner
kwargs = {
"output": output_folder_name,
"report_name": report_name,
"failfast": True
}
result = HTMLTestRunner(**kwargs).run(task_suite)
```
### testsuite
For those who have `test suites` it works too, just create a runner instance and call the run method with your suite.
Here is an example:
```python
from unittest import TestLoader, TestSuite
from pyunitreport import HTMLTestRunner
import ExampleTest
import Example2Test
example_tests = TestLoader().loadTestsFromTestCase(ExampleTests)
example2_tests = TestLoader().loadTestsFromTestCase(Example2Test)
suite = TestSuite([example_tests, example2_tests])
kwargs = {
"output": output_folder_name,
"report_name": report_name,
"failfast": True
}
runner = HTMLTestRunner(**kwargs)
runner.run(suite)
```
## Output
### Console output
This is an example of what you got in the console.
```text
$ python examples/testcase.py
Running tests...
----------------------------------------------------------------------
This test should be marked as error one. ... ERROR (0.000575)s
This test should fail. ... FAIL (0.000564)s
test_isupper (__main__.TestStringMethods) ... OK (0.000149)s
This test should be skipped. ... SKIP (0.000067)s
test_split (__main__.TestStringMethods) ... OK (0.000167)s
test_upper (__main__.TestStringMethods) ... OK (0.000134)s
======================================================================
ERROR [0.000575s]: This test should be marked as error one.
----------------------------------------------------------------------
Traceback (most recent call last):
File "examples/testcase.py", line 23, in test_error
raise ValueError
ValueError
======================================================================
FAIL [0.000564s]: This test should fail.
----------------------------------------------------------------------
Traceback (most recent call last):
File "examples/testcase.py", line 27, in test_fail
self.assertEqual(1, 2)
AssertionError: 1 != 2
----------------------------------------------------------------------
Ran 6 tests in 0.002s
FAILED
(Failures=1, Errors=1, Skipped=1)
Generating HTML reports...
Template is not specified, load default template instead.
Reports generated: /Users/Leo/MyProjects/ApiTestEngine/src/pyunitreport/reports/example_dir/2017-07-26-23-33-49.html
```
### Html Output
![html output](resources/html_output.gif)
![html output](resources/html_output.png)
banrieen_PyUnitReport modified from PyUnitReport is a unittest test runner that save test results in Html files, for human readable presentation of results.
## Installation
```bash
$ pip install banrieen_PyUnitReport
```
## Usage
### testcase
```python
from pyunitreport import HTMLTestRunner
import unittest
class TestStringMethods(unittest.TestCase):
""" Example test for HtmlRunner. """
def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO')
def test_isupper(self):
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper())
def test_split(self):
s = 'hello world'
self.assertEqual(s.split(), ['hello', 'world'])
# check that s.split fails when the separator is not a string
with self.assertRaises(TypeError):
s.split(2)
def test_error(self):
""" This test should be marked as error one. """
raise ValueError
def test_fail(self):
""" This test should fail. """
self.assertEqual(1, 2)
@unittest.skip("This is a skipped test.")
def test_skip(self):
""" This test should be skipped. """
pass
if __name__ == '__main__':
unittest.main(testRunner=HTMLTestRunner(output='example_dir'))
```
In most cases, you can use `PyUnitReport` with `unittest.main`, just pass it with the `testRunner` keyword.
For `HTMLTestRunner`, the only parameter you must pass in is `output`, which specifies the directory of your generated report. Also, if you want to specify the report name, you can use the `report_name` parameter, otherwise the report name will be the datetime you run test. And if you want to run testcases in `failfast` mode, you can pass in a `failfast` parameter and assign it to be True.
Here is another way to run the testcases.
```python
from pyunitreport import HTMLTestRunner
kwargs = {
"output": output_folder_name,
"report_name": report_name,
"failfast": True
}
result = HTMLTestRunner(**kwargs).run(task_suite)
```
### testsuite
For those who have `test suites` it works too, just create a runner instance and call the run method with your suite.
Here is an example:
```python
from unittest import TestLoader, TestSuite
from pyunitreport import HTMLTestRunner
import ExampleTest
import Example2Test
example_tests = TestLoader().loadTestsFromTestCase(ExampleTests)
example2_tests = TestLoader().loadTestsFromTestCase(Example2Test)
suite = TestSuite([example_tests, example2_tests])
kwargs = {
"output": output_folder_name,
"report_name": report_name,
"failfast": True
}
runner = HTMLTestRunner(**kwargs)
runner.run(suite)
```
## Output
### Console output
This is an example of what you got in the console.
```text
$ python examples/testcase.py
Running tests...
----------------------------------------------------------------------
This test should be marked as error one. ... ERROR (0.000575)s
This test should fail. ... FAIL (0.000564)s
test_isupper (__main__.TestStringMethods) ... OK (0.000149)s
This test should be skipped. ... SKIP (0.000067)s
test_split (__main__.TestStringMethods) ... OK (0.000167)s
test_upper (__main__.TestStringMethods) ... OK (0.000134)s
======================================================================
ERROR [0.000575s]: This test should be marked as error one.
----------------------------------------------------------------------
Traceback (most recent call last):
File "examples/testcase.py", line 23, in test_error
raise ValueError
ValueError
======================================================================
FAIL [0.000564s]: This test should fail.
----------------------------------------------------------------------
Traceback (most recent call last):
File "examples/testcase.py", line 27, in test_fail
self.assertEqual(1, 2)
AssertionError: 1 != 2
----------------------------------------------------------------------
Ran 6 tests in 0.002s
FAILED
(Failures=1, Errors=1, Skipped=1)
Generating HTML reports...
Template is not specified, load default template instead.
Reports generated: /Users/Leo/MyProjects/ApiTestEngine/src/pyunitreport/reports/example_dir/2017-07-26-23-33-49.html
```
### Html Output
![html output](resources/html_output.gif)
![html output](resources/html_output.png)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file banrieen_PyUnitReport-0.1.4.tar.gz
.
File metadata
- Download URL: banrieen_PyUnitReport-0.1.4.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bda7494ac2d25a0f5b0f11087f16dcf82f9c104a8de314f1712202c917e05aa2 |
|
MD5 | e3c9bd796668f866e1ff9f725dcafc9b |
|
BLAKE2b-256 | 500a33534ef14aa95458512cd0906c2a9b22f470c58cce4e7e01db866b206c2d |
File details
Details for the file banrieen_PyUnitReport-0.1.4-py3-none-any.whl
.
File metadata
- Download URL: banrieen_PyUnitReport-0.1.4-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59a4b0823d79fcd1949770352873255c72def95a6f584038f36b3110bb4c7ffe |
|
MD5 | 119dcc9ce514896a12ab291cf47ebeb6 |
|
BLAKE2b-256 | 1dae002494878496f18feca009f88f3f370c61042d1bf81458eee028e43f20a2 |