Testing
Testing (which includes unit testing, integration testing, and regression testing) is very important for quality code; extremely so if the code is a library that will be used in other software.
Test Framework: pytest
aiosmtpd
uses the pytest
testing framework.
Advanced features of pytest are widely used throughout.
Plugins
The one required plugin is pytest-mock
;
it is used extensively throughout the test suite.
Other plugins that are used, to various degrees, in the aiosmtpd
test suite are:
pytest-cov
to integrate withcoverage-py
pytest-sugar
to provide better uxpytest-print
to give some progress indicator and to assist test troubleshootingpytest-profiling
to implement*-profile
testenv, although to be honest this is not really useful as the profiling gets ‘muddied’ by pytest runner.
Fixtures
Below is a list of fixtures defined throught the test suite, in alphabetical order:
Important
As long as you create your test module(s) inside the aiosmtpd/tests
directory,
you do not need to import the above fixtures;
they will automatically be available for use as they are defined in the conftest.py
file.
Note
Individual test modules may define their own module-specific fixtures; please refer to their respective docstrings for description / usage guide.
Markers
- @client_data(...)
Provides parameters to the :fixture:`~aiosmtpd.tests.conftest.client` fixture.
- Parameters:
connect_to (
HostPort
) – Address to connect to. Defaults toGlobal.SrvAddr
- @controller_data(...)
Provides parameters to the :fixture:`~aiosmtpd.tests.conftest.get_controller` fixture.
- Parameters:
class_ – The class to be instantiated by
get_controller
. Will be overridden ifget_controller
is invoked with theclass_
argument.host_port (str) – The “host:port” to bound to
**kwargs – Keyworded arguments given to the marker.
- @handler_data(...)
Provides parameters to the :fixture:`~aiosmtpd.tests.conftest.get_handler` fixture.
- Parameters:
args_ – A tuple containing values that will be passed as positional arguments to the controller constructor
class_ – The class to be instantiated by
get_controller
*args – Positional arguments given to the marker. Will override the
args_
keyword argument**kwargs – Keyworded arguments given to the marker.