用于与Plone的集成测试
项目描述
简介
collective.MockMailHost 允许对 Plone 的邮件功能进行集成测试。只需将此 egg 添加到您的 [test] 运行器部分,并通过您的 Layer 或 TestCase 安装此产品。
- 注意
此产品仅限测试目的,请不要在您的运行中的 Plone 站点上使用。它用 Mock MailHost 替换了标准 MailHost,您可以用它来检查邮件内容和收件人。
已与 Plone 4 进行测试,但应也能与早期版本兼容。
集成
以下示例展示了如何基于 plone.app.testing 将 collective.MockMailHost 集成到您的测试设置中。将此包添加到您的包的 setup.py 文件中的 extras_requires 部分,以便 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']
测试在默认成员发帖论坛中开始对话、回复和修改评论。
记录所有异常,这对调试很有用。另外,清除小部件槽位,以减少测试浏览器被如最近的小部件和导航树之类的事物困惑。
>>> portal.error_log._ignored_exceptions = () >>> portal.left_slots = portal.right_slots = [] >>> workflow = portal.portal_workflow
验证邮件主机替换
>>> portal.MailHost <collective.MockMailHost.MockMailHost.MockMailHost object at ...>>>> getToolByName(portal, 'MailHost') <collective.MockMailHost.MockMailHost.MockMailHost object at ...>>>> getUtility(IMailHost) <collective.MockMailHost.MockMailHost.MockMailHost object 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 >>> b'To: member@example.com' in portal.MailHost.messages[0] True >>> b'From: admin@example.com' in portal.MailHost.messages[0] True >>> b'Dear Sir:' in portal.MailHost.messages[0] True >>> portal.MailHost.messages_from ['admin@example.com'] >>> portal.MailHost.messages_to [['member@example.com']] >>> portal.MailHost.reset() >>> len(portal.MailHost.messages) 0
发送一个带有 cc/bcc 收件人的 email.message.EmailMessage 对象
>>> from email.message import EmailMessage >>> msg = EmailMessage() >>> msg["Subject"] = "Hello" >>> msg["From"] = "me@example.com" >>> msg["To"] = "you@example.com" >>> msg["Cc"] = "foo@example.com" >>> msg["Bcc"] = "bar@example.com" >>> msg.set_content(""" ... This message is for you, foo, and bar. ... """) >>> portal.MailHost.send(msg) >>> len(portal.MailHost.messages) 1 >>> b'To: you@example.com' in portal.MailHost.messages[0] True >>> b'From: me@example.com' in portal.MailHost.messages[0] True >>> b'Cc: foo@example.com' in portal.MailHost.messages[0] True >>> b'bar@example.com' in portal.MailHost.messages[0] False >>> b'This message is for you, foo, and bar.' in portal.MailHost.messages[0] True >>> len(portal.MailHost.messages) 1 >>> portal.MailHost.messages_from ['me@example.com'] >>> portal.MailHost.messages_to [['you@example.com', 'foo@example.com', 'bar@example.com']] >>> portal.MailHost.reset() >>> len(portal.MailHost.messages) 0
变更日志
3.0.0 (2024-04-23)
重大变更
移除对 Python 3.7 之前版本和 Plone 5.2 之前版本的支持。[mamico]
新功能
添加 messages_from 和 messages_to 记录发送者和收件人。这对于测试消息中不存在 bcc 很有用。[mamico]
错误修复
在此添加条目
2.0.0 (2018-11-06)
重大变更
不再依赖于旧的 SecureMailHost。[pbauer]
新功能
支持 Python 3。[pbauer]
1.1.0 (2018-06-27)
修复导入位置,已经删除 Globals。[gforcada]
重构测试设置。[gforcada]
1.0 (2016-01-25)
修复 MIMEText 兼容性(自 0.9 版以来已损坏)。[jone]
0.9 (2015-07-10)
在发送前清理 msg。否则 Plone 自注册邮件将无法工作 [sureshvv]
0.8 (2015-06-13)
添加浏览器视图进行功能测试 [Casecarsid]
0.7 (2013-07-05)
MANIFEST [sureshvv]
0.6 (2013-07-03)
跟踪 msg_type。[sureshvv]
使 MockMailHost 更像 collective.testcaselayer 的 MockMailHost。[saily]
更新文档 [saily]
0.5 - 2012-09-25
从 setup.py 中移除 ZopeSkel 和 Paster 依赖 [saily]
迁移到 github 并更改到 README.rst,修改 setup.py 中的链接 [saily]
允许 MockMailHost 类中的 send 和 secureSend 方法有多个参数。[saily]
0.4 (2011-05-17)
在 SiteManager 中注册 MockMailHost,以便在使用 getToolByName(context, 'MailHost') 或 getUtility(IMailHost) 时获取 MockMailHost。[saily]
从 SimpleItem 继承而不是从 MailHost 继承。[saily]
实现 secureSend 方法。[saily]
0.3 (2011-04-04)
将 **kwargs 添加到 MockMailHost 的 send 方法,以支持 mto、mfrom 等关键字参数,就像默认 MailHost 一样。[saily]
添加用于设置各种处理器的通用设置文件。[sureshvv]
0.2 (2010-05-21)
添加测试 [sureshvv]
0.1 (2010-05-16)
初始版本 [sureshvv]
项目详情
下载文件
下载适用于您平台文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建分布
collective.MockMailHost-3.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 392071e1037d19851c7e209efd681e9830c11356226fc17c23f3e671b8ca9f06 |
|
MD5 | fb4a110ef335be4fdf7b41eaafc80539 |
|
BLAKE2b-256 | 194818aa36e82d58f97ee04a216cd9a90d76f56ef8d6482d6c3d007fab5d77a3 |
collective.MockMailHost-3.0.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a008be95e6e85afff75310156cde30462b20435a1223d0ca791bc6962a61118d |
|
MD5 | b22c0d211f3862458f6b67754d59ff93 |
|
BLAKE2b-256 | 2b9951cdac9f189de8f9c7882dd845fa6e8aece928419ebb90ba5005a0f67ccb |