用于plone集成测试
collective.MockMailHost的Python项目详细描述
简介
collective.MockMailHost启用电子邮件功能的集成测试 来自Plone。只需将这个鸡蛋添加到[测试]运行程序部分,然后安装 此产品通过Layer或TestCase。
- 注意
- 本产品仅供测试之用,请勿在 运行plone站点。它用一个mock替换了标准的mailhost 您可以查看电子邮件内容和收件人的邮件主机。
已经用PLONE4测试过了,但也应该可以用以前的版本。
积分
如何将collective.MockMailHost集成到测试设置的示例 基于plone.app.testing。将包添加到“附加要求”部分 在包的setup.py文件中,因此buildout将自动下载 您的包裹。
setup(name='my.package', ... extras_require={ 'test': [ 'plone.app.testing', 'collective.MockMailHost', ] }, ... )
您的测试层设置如下所示:
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()
使用会员发布论坛
>>> from Products.CMFCore.utils import getToolByName >>> from Products.MailHost.interfaces import IMailHost >>> from zope.component import getUtility>>> app = layer['app'] >>> portal = layer['portal']
测试在默认情况下启动对话、答复和修改注释 会员发布论坛。
让我们记录所有异常,这对调试很有用。另外,清除Portlet slots,以减少测试浏览器被最近的portlet之类的东西混淆 还有那棵树。
>>> portal.error_log._ignored_exceptions = () >>> portal.left_slots = portal.right_slots = [] >>> workflow = portal.portal_workflow
验证邮件主机更换
>>> portal.MailHost <MockMailHost at ...>>>> getToolByName(portal, 'MailHost') <MockMailHost at ...>>>> getUtility(IMailHost) <MockMailHost at ...>
发送电子邮件
>>> to_ = "member@example.com" >>> from_ = "admin@example.com" >>> msg = """ ... ... Dear Sir: ... ... Thank you""" >>> portal.MailHost.send(msg, to_, from_) >>> len(portal.MailHost.messages) 1 >>> 'To: member@example.com' in portal.MailHost.messages[0] True >>> 'From: admin@example.com' in portal.MailHost.messages[0] True >>> 'Dear Sir:' in portal.MailHost.messages[0] True >>> portal.MailHost.reset() >>> len(portal.MailHost.messages) 0
更改日志
2.0.0(2018-11-06)
中断更改:
- 不再依赖旧的securemailhost。 [PBAUER]
新功能:
- 支持Python3。 [PBAUER]
1.1.0(2018-06-27)
- 修复导入位置,全局变量已被删除。 [gforcada]
- 返工测试设置。 [gforcada]
1.0(2016-01-25)
- 修复mimetext兼容性(从0.9开始中断)。 [乔恩]
0.9(2015-07-10)
- 发送前清除邮件。否则plone自动注册 电子邮件不起作用[sureshvv]
0.8(2015-06-13)
- 为功能测试添加浏览器视图[casecarsid]
0.7(2013-07-05)
- 舱单[sureshvv]
0.6(2013-07-03)
- 同时跟踪消息类型。 [sureshvv]
- 行为更像collective.testcaselayer的mockmailhost。 [航行]
- 文档更新 [航行]
0.5-2012年9月25日
- 从setup.py中删除zopeskel和paster依赖项 [航行]
- 移到github并更改为readme.rst,setup.py中的链接 [航行]
- 中的send和secureSend方法允许多个参数 mockMailHost类。[航行]
0.4(2011-05-17)
- 使用时在sitemanager中注册mockmailhost以获取mockmailhost getToolByName(context, 'MailHost')或getUtility(IMailHost)。 [航行]
- 从mailhost继承而不是simpleitem [航行]
- 实现securesend方法 [航行]
0.3(2011-04-04)
- 将**kwargs添加到mockmailhost的send方法以支持mto、mfrom、… 关键字参数作为默认的mailhost。[航行]
- 为通用安装程序添加了各种处理程序的文件 [sureshvv]
0.2(2010-05-21)
- 添加的测试 [sureshvv]
0.1(2010-05-16)
- 初次发行 [sureshvv]