# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. """ Interfaces for Trial. Maintainer: Jonathan Lange """ from __future__ import division, absolute_import import zope.interface as zi from zope.interface import Attribute class ITestCase(zi.Interface): """ The interface that a test case must implement in order to be used in Trial. """ failureException = zi.Attribute( "The exception class that is raised by failed assertions") def __call__(result): """ Run the test. Should always do exactly the same thing as run(). """ def countTestCases(): """ Return the number of tests in this test case. Usually 1. """ def id(): """ Return a unique identifier for the test, usually the fully-qualified Python name. """ def run(result): """ Run the test, storing the results in C{result}. @param result: A L{TestResult}. """ def shortDescription(): """ Return a short description of the test. """ class IReporter(zi.Interface): """ I report results from a run of a test suite. """ stream = zi.Attribute( "Deprecated in Twisted 8.0. " "The io-stream that this reporter will write to") tbformat = zi.Attribute("Either 'default', 'brief', or 'verbose'") args = zi.Attribute( "Additional string argument passed from the command line") shouldStop = zi.Attribute( """ A boolean indicating that this reporter would like the test run to stop. """) separator = Attribute( "Deprecated in Twisted 8.0. " "A value which will occasionally be passed to the L{write} method.") testsRun = Attribute( """ The number of tests that seem to have been run according to this reporter. """) def startTest(method): """ Report the beginning of a run of a single test method. @param method: an object that is adaptable to ITestMethod """ def stopTest(method): """ Report the status of a single test method @param method: an object that is adaptable to ITestMethod """ def startSuite(name): """ Deprecated in Twisted 8.0. Suites which wish to appear in reporter output should call this before running their tests. """ def endSuite(name): """ Deprecated in Twisted 8.0. Called at the end of a suite, if and only if that suite has called C{startSuite}. """ def cleanupErrors(errs): """ Deprecated in Twisted 8.0. Called when the reactor has been left in a 'dirty' state @param errs: a list of L{twisted.python.failure.Failure}s """ def upDownError(userMeth, warn=True, printStatus=True): """ Deprecated in Twisted 8.0. Called when an error occurs in a setUp* or tearDown* method @param warn: indicates whether or not the reporter should emit a warning about the error @type warn: Boolean @param printStatus: indicates whether or not the reporter should print the name of the method and the status message appropriate for the type of error @type printStatus: Boolean """ def addSuccess(test): """ Record that test passed. """ def addError(test, error): """ Record that a test has raised an unexpected exception. @param test: The test that has raised an error. @param error: The error that the test raised. It will either be a three-tuple in the style of C{sys.exc_info()} or a L{Failure} object. """ def addFailure(test, failure): """ Record that a test has failed with the given failure. @param test: The test that has failed. @param failure: The failure that the test failed with. It will either be a three-tuple in the style of C{sys.exc_info()} or a L{Failure} object. """ def addExpectedFailure(test, failure, todo): """ Record that the given test failed, and was expected to do so. @type test: L{pyunit.TestCase} @param test: The test which this is about. @type error: L{failure.Failure} @param error: The error which this test failed with. @type todo: L{unittest.Todo} @param todo: The reason for the test's TODO status. """ def addUnexpectedSuccess(test, todo): """ Record that the given test failed, and was expected to do so. @type test: L{pyunit.TestCase} @param test: The test which this is about. @type todo: L{unittest.Todo} @param todo: The reason for the test's TODO status. """ def addSkip(test, reason): """ Record that a test has been skipped for the given reason. @param test: The test that has been skipped. @param reason: An object that the test case has specified as the reason for skipping the test. """ def printSummary(): """ Deprecated in Twisted 8.0, use L{done} instead. Present a summary of the test results. """ def printErrors(): """ Deprecated in Twisted 8.0, use L{done} instead. Present the errors that have occured during the test run. This method will be called after all tests have been run. """ def write(string): """ Deprecated in Twisted 8.0, use L{done} instead. Display a string to the user, without appending a new line. """ def writeln(string): """ Deprecated in Twisted 8.0, use L{done} instead. Display a string to the user, appending a new line. """ def wasSuccessful(): """ Return a boolean indicating whether all test results that were reported to this reporter were successful or not. """ def done(): """ Called when the test run is complete. This gives the result object an opportunity to display a summary of information to the user. Once you have called C{done} on an L{IReporter} object, you should assume that the L{IReporter} object is no longer usable. """