модульный тест, чтобы проверить, будет ли возвращен правильный контекст для данного пути - PullRequest
2 голосов
/ 16 апреля 2011

Так же, как в названии. У меня есть модель, которую я могу проверить вручную. Я ввожу URL в браузере и получаю результат из одного из представлений. Дело в том, что unittest должен делать это.

Я думаю, что должен быть какой-то способ создать запрос, отправить его в приложение и получить взамен контекст.

Ответы [ 2 ]

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

Вы можете создавать функциональные тесты, используя пакет WebTest, который позволяет вам обернуть ваше приложение WSGI в TestApp, который поддерживает .get(), .post() и т. Д.

См. http://docs.pylonsproject.org/projects/pyramid/1.0/narr/testing.html#creating-functional-tests для деталей в Пирамиде, вставленных здесь для потомков:

import unittest

class FunctionalTests(unittest.TestCase):
    def setUp(self):
        from myapp import main
        app = main({})
        from webtest import TestApp
        self.testapp = TestApp(app)

    def test_root(self):
        res = self.testapp.get('/', status=200)
        self.failUnless('Pyramid' in res.body)
1 голос
/ 16 апреля 2011

Pyramid на самом деле не предоставляет метод для проверки реального запроса и получения информации о внутренностях.Вы можете выполнить traverser самостоятельно, используя:

from pyramid.traversal import traverse

app = get_app(...)
root = get_root(app)
out = traverse(root, '/my/test/path')

context = out['context']

Однако, тест немного надуманный.Было бы более уместно использовать функциональный тест, который проверяет, является ли возвращенная страница тем, что вы ожидаете.

...