如何对 Django-CMS 扩展进行单元测试?

2023-12-29

我正在尝试为我正在开发的 Django-CMS 实现获取一些测试覆盖率,但我不确定如何对插件/扩展进行单元测试。以前有人这样做过吗?如果是,怎么做的?一些例子会很棒。


测试如下所示cms/tests/plugins.py与其说是单元测试,不如说是集成测试,这是相当重量级的,有时需要整个系统的很大一部分启动和运行(不一定是错误,只是在调试时不切实际)。

DjangoCMS 是紧密集成的,所以我这里有一些“更接近金属”的技术,而不是完整的解决方案:

你需要一个“Expando”风格的假类:

class Expando(object): # Never use in production!
    def __init__(self, **kw):
        self.__dict__.update(kw)

要实例化插件类的实例:

from cms.plugin_pool import plugin_pool

# ..in production code: class YourPlugin(CMSPlugin)...

# This ensures that the system is aware of your plugin:
YrPluginCls = plugin_pool.plugins.get('YourPlugin', None)

# ..instantiate:
plugin = YrPluginCls()

健全性检查插件.render method:

ctx = plugin.render({}, Expando(attr1='a1', attr2=123), None)

使用实际模板渲染,检查输出:

res = render_to_response(look.render_template, ctx)
# assert that attr1 exist in res if it should
# ..same for attr2

美丽汤 http://www.crummy.com/software/BeautifulSoup/在验证小 DOM 片段的内容时很方便。

使用管理表单字段间接检查模型属性是否正确运行:

from django.test.client import RequestFactory
from django.contrib.auth.models import AnonymousUser

# ...

request = RequestFactory().get('/')
request.user = AnonymousUser()
a_field = plugin.get_form(request).base_fields['a_field']
a_field.validate('<some valid value>')
# Check that a_field.validate('<some invalid value>') raises
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对 Django-CMS 扩展进行单元测试? 的相关文章

  • 在 Heroku 上安装 GeoDjango

    我正在尝试构建一个使用 GeoDjango 的网络应用程序 该应用程序将托管在 Heroku 上 但我在其中遇到了问题 我在用this https github com dulaccc heroku buildpack geodjango构
  • Django-celery/RabbitMQ 在哪里存储任务结果?

    我的 celery 数据库后端设置是 CELERY RESULT BACKEND database CELERY RESULT DBURI mysqlite db 我使用 RabbitMQ 作为我的消息发送器 似乎没有任何结果存储在数据库中
  • Django、Heroku、boto:直接文件上传到谷歌云存储

    在部署在 Heroku 上的 Django 项目中 我曾经通过 boto 将文件上传到 Google 云存储 但是 最近我必须上传大文件 这会导致 Heroku 超时 我正在关注 Heroku 的文档直接文件上传到S3 https devc
  • django.db.utils.OperationalError:Shell 命令 forloop 中外键不匹配

    我正在研究以下两个 Django 模型 以用户作为外键的组织模型和以组织作为外键的类别列表 以下是Models Create your models here from django contrib auth models import U
  • Django 模型同步表

    如果我更改 Django 模型中的字段 如何将其与数据库表同步 我是否需要在数据库上手动执行此操作 或者是否有工具可以帮助完成此过程 唉 Django 不支持任何简单的解决方案 django 唯一能为你做的就是使用与新模型匹配的新表重新启动
  • 构建一个两阶段的 Django 管理表单来添加对象?

    是否可以构建一个两阶段表单来在 Django admin 中创建对象 当管理员用户访问时 admin my app article add 我想显示一些选项 然后 应用程序将显示创建页面 其中包含基于所做选择的预先计算的字段 你可以覆盖ad
  • 查找同一模型的两个实例之间哪些字段不同

    嗯 我认为这个问题本身就很解释 我有两个 Django 模型实例 我想知道哪些字段不同 你如何以聪明的方式做到这一点 Cheers 让我们说obj1 and obj2是模型的 2 个实例MyModel 要了解 Django 模型的两个实例上
  • 初始填充 Django Forms

    我决定学习 Django Forms 一段时间以来 我一直在使用 HTML 表单 因为我很难接受 Django Forms 如何将初始数据填充到 Django Forms 中 例子 考虑这些模型是否已填充 包含数据 模型 py class
  • Django-allauth:社交帐户的自定义注册表单

    我发现在这个问题 https stackoverflow com questions 12303478 how to customize user profile when using django allauth 和文档 可以使用 ACC
  • Django:ModelForm 管理员的当前用户 ID

    我想用当前用户过滤 ModelChoiceField 我找到了一个非常接近我想做的解决方案 但我不明白Django 如何在管理表单中获取当前用户 https stackoverflow com questions 2864955 djang
  • 如何在 django 表单中设置自定义 HTML 属性?

    我有一个 Django 表单 它是页面的一部分 假设我有一个字段 search input forms CharField u Search word required False 我只能通过模板访问它 form search input
  • Django CBV表单提交返回的JSON显示为新页面

    我正在使用 Django 3 2 我正在创建一个简单的时事通讯订阅表格 表单提交将 JSON 返回到前端 然后应该使用前端来更新页面的部分内容 但是 当我发布表单时 JSON 字符串将在新页面上显示为文本 这是调用视图的路由 urlpatt
  • Django 自定义查询集过滤器

    在 Django 中 是否有一种标准方法可以为查询集编写复杂的自定义过滤器 就像我能写的一样 MyClass objects all filter field val 我想做这样的事情 MyClass objects all filter
  • Django:上传前调整图像大小

    我想调整图像大小 Pillow 在上传之前 我在下面编写了代码但不起作用 并得到错误 myapp list 处的属性错误 坚定的 请求方式 POST 请求网址 http 127 0 0 1 8000 myapp list http 127
  • Django 中同一个模型的多个多对多关系

    给定以下具有两个多对多关系的模型 class Child models Model name models CharField max length 80 class Foo models Model bar models ManyToMa
  • GAE 生产 + Django + Gunicorn 错误:HaltServer 'Worker 无法启动。' 3

    我通过 python manage py runserver 在本地主机上运行我的 Django 项目 它有效 我将其部署在 Google App Engine 上 在 xxx appspot com 上打印502 错误网关 由 Nginx
  • eclipse.ui.menus 的名称过滤器

    我有一个菜单贡献 通过实现org eclipse ui menus扩展点 我想仅为特定文件扩展名 例如 pld 提供此菜单贡献 但我不知道如何使用 visibleWhen 来做到这一点 有任何想法吗 更新 到目前为止我的扩展点
  • 如何按类的特定属性排序?

    我有一个具有跟踪价格属性的模型 现在 我有该型号的列表 无论如何 是否可以重新排列列表以按该特定属性进行排序 python 是否足够聪明 知道该属性是一个可以排序的值 我没有使用数据库跟踪特定模型的实例 我正在做的事情不需要它 所以我不能只
  • Django 权限

    我希望在我的 Django 项目中拥有更细粒度的权限 但无法决定使用哪个应用程序 我所拥有的是这样的 class Item models Model name models CharField max length 64 unique Tr
  • Django 中使用外键的抽象基类继承

    我正在尝试在 Django 支持的网站上进行模型继承 以遵守 DRY 我的目标是使用一个名为 BasicCompany 的抽象基类来为三个子类提供通用信息 Butcher Baker CandlestickMaker 它们位于各自的应用程序

随机推荐