如何测试打包为可重用应用程序的DjangoCMS插件

2024-05-13 04:54:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我遵循了Django docs中的过程,使一些Django CMS插件可重用,并使用Hitchhiker's guide to packaging将它们放在pypi上,因此它们可以通过

pip install cmsplugin-rt

这会将它们安装到python可以找到的地方。当然,我在别的地方有我的开发目录。在

但是当我向这个包中添加一些测试时,我得到了一个错误:

^{pr2}$

需要更多的解释。由于包不是Django项目的一部分,即没有manage.py文件来运行测试,所以我按照建议here at stackoverflow并将runtests.py添加到tests目录中。在这个文件中,我特别写了:

import os, sys
from django.conf import settings

DIRNAME = os.path.dirname(__file__)
settings.configure(DEBUG=True,
    DATABASES={
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
         }
     },
    CMS_TEMPLATES = ( ('template_for_tests.html', 'Test template'), ),
    CMS_MODERATOR = False,
    CMS_PERMISSION = False,
    TEMPLATE_CONTEXT_PROCESSORS = (
        'django.contrib.auth.context_processors.auth',
        'django.core.context_processors.i18n',
        'django.core.context_processors.request',
        'django.core.context_processors.media',
        'django.core.context_processors.static',
        'cms.context_processors.media',
        'sekizai.context_processors.sekizai',
    ),
    INSTALLED_APPS = (
        'cmsplugin_rt.button',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.admin',
        'django.contrib.sites',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'south',
        'cms',
        'mptt',
        'menus',
        'sekizai',
    ),
)

from django.test.simple import DjangoTestSuiteRunner
test_runner = DjangoTestSuiteRunner(verbosity=2)
failures = test_runner.run_tests(['cmsplugin_rt', ])
if failures:
    sys.exit(failures)

所以,正如我提到的,当我执行python runtests.py时,我得到了一个错误:

^{pr2}$

我哪里出错了?或者有更好的方法吗?我想在那里做些测试!在

谢谢!在

(如果这确实运行了,测试是使用我的开发版本的包运行的,还是从pip安装中获取版本?我是否需要在每次运行之前pip uninstall cmsplugin-rt

这是我的目录结构-我在一个包中有几个插件,这可能是问题的一部分。我把tests目录放在这里,尽管我也尝试了一个级别。在

cmsplugin-rt/
--README.txt
--LICENSE.txt
--MANIFEST.in
--setup.py
--cmsplugin_rt/
----__init__.py
----models.py
----button/
------__init__.py
------models.py
------cms_plugins.py
------templates/
----(other plugins)/
----tests/
------runtests.py
------mytests.py

为了安全起见,我还在顶层放了一个空的models.py(遵循建议here),但我不确定这是否有任何区别。在


Tags: pipdjangopycoreimport目录cmsplugincms
1条回答
网友
1楼 · 发布于 2024-05-13 04:54:41

对于后人来说,这里是我在第一次评论中提到的南方移民问题。它不漂亮,所以我很乐意有任何关于如何改进它的建议。在

cmsplugin_rt.button模型添加新字段的过程是:

  1. 在进行任何编辑之前,将site-packages/cmsplugin_rt/button作为一个名为button的应用程序复制到一个虚拟的Django CMS项目中
  2. 删除此新应用的button/migrations/目录
  3. button添加到虚拟项目settings.py的已安装应用程序中
  4. 运行./manage.py schemamigration init button,使虚拟项目对数据库的理解与当前模型保持一致(在进行任何更改之前)
  5. 运行./manage.py migrate button,更新虚拟项目的数据库
  6. 在虚拟项目中编辑按钮的model.py文件以添加额外的字段,并进行所需的任何其他更改。在
  7. 运行./manage.py schemamigration auto button,生成迁移代码。这将在button/migrations/0002_auto__...
  8. 这个文件是您需要放在您的包中的,但是如果插件最初不仅仅包含0001_initial.py迁移文件,那么它前面的数字就会错误。将它与正确的编号一起复制到您的包开发目录中。也可以复制任何模型,cms插件,模板和其他你所做的更改。在

相关问题 更多 >