collective.MockMailHost
enables integration testing of email functionality from Plone. Simply add this egg to your [test] runner section, and install this product through your Layer
or TestCase
.
- Note
-
THIS IS FOR TESTING PURPOSE ONLY, do not use this product on your running Plone site. It replaces the standard MailHost with a Mock MailHost that you can poke at to check email content and recipients.
Has been tested with Plone 4 but should also work with earlier versions.
Example how to integrate collective.MockMailHost
to your testing setup based on plone.app.testing. Add the package to your extras_requires section in your package's setup.py
file, so buildout will automatically download the package for you.:
setup(name='my.package',
...
extras_require={
'test': [
'plone.app.testing',
'collective.MockMailHost',
]
},
...
)
Your test layer setup could look like this example below:
from plone.app.testing import helpers, layers
from plone.testing import z2
class MyLayer(helpers.PloneSandboxLayer):
defaultBases = (layers.PLONE_FIXTURE, )
def setUpZope(self, app, configurationContext):
# Load zcml
import collective.MockMailHost
self.loadZCML(package=collective.MockMailHost)
# Install product and call its initialize() function
z2.installProduct(app, 'collective.MockMailHost')
# Note: you can skip this if my.product is not a Zope 2-style
# product, i.e. it is not in the Products.* namespace and it
# does not have a <five:registerPackage /> directive in its
# configure.zcml.
def tearDownZope(self, app):
# Uninstall product
z2.uninstallProduct(app, 'collective.MockMailHost')
# Note: Again, you can skip this if my.product is not a Zope 2-
# style product
def setUpPloneSite(self, portal):
helpers.quickInstallProduct(portal, 'collective.MockMailHost')
helpers.applyProfile(portal, 'collective.MockMailHost:default')
MY_FIXTURE = MyLayer()