Как запустить тестирование в продукте, разрабатываемом в Plone 4? - PullRequest
2 голосов
/ 08 апреля 2011

Я разрабатываю продукт для Plone 4 в каталоге установки zeocluster/src/..., и у меня есть автоматический тест. К сожалению, когда я запускаю 'bin / client1 shell' и затем (path to Plone's Python)/bin/python setup.py test, это не удается. Ошибка

File "buildout-cache/eggs/Products.PloneTestCase-0.9.12-py2.6.egg/Products/PloneTestCase/PloneTestCase.py", line 109, in getPortal
    return getattr(self.app, portal_name)
AttributeError: plone

Как правильно запускать автоматизированные тесты в Plone 4?

В setup.py,

...
test_suite = "nose.collector"
...

Неудачный тест:

import unittest

from Products.PloneTestCase import PloneTestCase as ptc

ptc.setupPloneSite()

class NullTest(ptc.PloneTestCase):        
    def testTest(self):
        pass

def test_suite():
    return unittest.TestSuite([
            unittest.makeSuite(NullTest)
        ])

if __name__ == '__main__':
    unittest.main(defaultTest='test_suite')

Ответы [ 3 ]

3 голосов
/ 09 апреля 2011

Лучше всего отредактировать ваш buildout.cfg и добавить деталь, которая создает скрипт «bin / test».Примерно так:

[test]
recipe = zc.recipe.testrunner
# Note that only tests for packages that are explicitly named (instead
# of 'implicitly' added to the instance as dependency) can be found.
eggs =
# Use the name of the plone.recipe.zope2instance part here, might be zeoclient instead: 
    ${instance:eggs}
defaults = ['--exit-with-status', '--auto-color', '--auto-progress']

Не забудьте добавить 'test' в 'parts' в главном разделе 'buildout' вашего buildout.cfg.Запустите bin / buildout, и теперь у вас должен быть скрипт bin / test.См. PyPI-страницу этого рецепта для получения дополнительных опций и объяснений.

Теперь при запуске bin / test должны выполняться все тесты для всех яиц, явно названных в части экземпляра.Это может запустить слишком много тестов.Используйте «bin / test -s your.package» для запуска только тестов для вашего .package, если ваш .package является частью яйца в экземпляре.

Обратите внимание, что вместо «pass», который выТеперь в тесте лучше добавить тест, который, как вы знаете, наверняка потерпит неудачу, например «self.assertEqual (True, False)».Тогда будет легче увидеть, что ваш тест действительно был запущен и что он не работает, как ожидалось.

Когда у меня есть простая сборка для тестирования одного конкретного пакета, который я разрабатываю, я обычно расширяю одну из конфигураций всамая гибкая сборка, как эта для Plone 4 ;Вы можете взглянуть на это для вдохновения.

3 голосов
/ 09 апреля 2011

Вам нужно использовать zope.testrunner и zope.testing для запуска ваших тестов. Plone-тесты нельзя запускать через нос, и мы не поддерживаем аргумент 'test_suite' для setup.py, изобретенный setuptools.

В других ответах объясняется, как настроить скрипт бегуна.

2 голосов
/ 09 апреля 2011

ptc.setupPloneSite () регистрирует отложенную функцию, которая будет фактически выполняться при настройке слоя zope.testrunner. Я предполагаю, что вы не используете zope.testrunner и, таким образом, слой не настраивается, поэтому сайт Plone никогда не создается, поэтому возникает ошибка AttributeError при попытке впоследствии получить объект портала.

...