Chapter 11. Testing
Because Twisted programs are event-driven and use Deferred
s to wait for and handle events, we
can’t easily use standard testing frameworks like Python’s unittest
to write tests for them.
To handle this, Twisted comes with an extension of Python’s unittest
framework for testing event-driven Twisted programs, and a command-line
utility for running them. These components comprise Trial, Twisted’s
testing framework.
Writing and Running Twisted Unit Tests with Trial
Tests that don’t exercise event-driven logic import twisted.trial.unittest
instead of unittest
but otherwise look identical to
traditional Python unittest
tests.
Example 11-1 shows a single test case class called MyFirstTestCase
, containing a single test
called test_something
, which makes an
assertion using the Twisted version of unittest
’s TestCase.assertTrue
. Most unittest
assertions have Twisted versions, and
Trial has additional assertions for exercising Failure
s.
from
twisted.trial
import
unittest
class
MyFirstTestCase
(
unittest
.
TestCase
):
def
test_something
(
self
):
self
.
assertTrue
(
True
)
We can use the trial command-line utility that ships with Twisted to run the test file:
$ trial test_foo.py
test_foo
MyFirstTestCase
test_something ... [OK]
-------------------------------------------------------------------------------
Ran 1 tests in 0.002s
PASSED (successes=1)
We can run individual test classes by specifying the class name, as in:
trial
test_foo
.
MyFirstTestCase
and run individual tests ...
Get Twisted Network Programming Essentials, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.