用于plone集成测试

collective.MockMailHost的Python项目详细描述


简介

collective.MockMailHost启用电子邮件功能的集成测试 来自Plone。只需将这个鸡蛋添加到[测试]运行程序部分,然后安装 此产品通过LayerTestCase

注意
本产品仅供测试之用,请勿在 运行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中的链接 [航行]
  • 中的sendsecureSend方法允许多个参数 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]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓工作室组织。json。JSONException:类型为java。无法将lang.String转换为JSONObject   java将数据从Jenkins参数化构建传递到testng。运行时的xml   java关注使用所有者框架异步打开JDialog   Android java:broadcastReceiver上的蓝牙连接事件未触发   在java中同时处理写入和读取的文件io   javascript如何替换目标数组字符串并将其更改为用户输入字符串   如何终止或停止java小程序中的其他线程   如何通过SeleniumJava连接到putty以执行一组命令并在putty窗口中验证输出   java为什么空列表上的循环会挂起?   java当我单击run时,什么也没有发生   swing Java多监视器问题   proguard java模块版本不匹配   java在facebook sdk 4.0上获取可标记好友+   java Android Fragmens和滑动示例   java导入。VS代码中的jar库   存储在SQL表中的java下载/显示文件   java项目Euler(第14页):递归问题   java如何在springboot中跳过失败的bean以避免报告失败:771>>应用程序启动失败