Опасайтесь, вам не хватает нескольких шагов.
Ваша программа ничего не делает, потому что вы не сказали ей ничего делать, вы просто определили класс. Итак, давайте расскажем ему что-нибудь сделать. Мы будем использовать пакет unittest, чтобы сделать вещи более автоматическими.
import unittest
from webtest import TestApp
class MyTests(unittest.TestCase):
def test_admin_login(self):
resp = self.TestApp.get('/admin')
print (resp.request)
if __name__ == '__main__':
unittest.main()
Run, который, и мы видим:
E
======================================================================
ERROR: test_admin_login (__main__.MyTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_foo.py", line 6, in test_admin_login
resp = self.TestApp.get('/admin')
AttributeError: 'MyTests' object has no attribute 'TestApp'
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
Итак, нам нужно приложение, чтобы проверить. Где его взять? Обычно вам нужно, чтобы приложение WSGI, которое вы создаете в своем main
, через config.make_wsgi_app()
. Самый простой способ - загрузить его, как и pserve development.ini
, когда вы запускаете приложение. Мы можем сделать это через pyramid.paster.get_app()
.
import unittest
from pyramid.paster import get_app
from webtest import TestApp
class MyTests(unittest.TestCase):
def test_admin_login(self):
app = get_app('testing.ini')
test_app = TestApp(app)
resp = test_app.get('/admin')
self.assertEqual(resp.status_code, 200)
if __name__ == '__main__':
unittest.main()
Теперь все, что нужно это INI файл, похожий на ваш development.ini
, но для целей тестирования. Вы можете просто скопировать development.ini
, пока вам не нужно будет устанавливать какие-либо настройки только для тестирования.
Надеюсь, это даст вам отправную точку, чтобы узнать больше о пакете unittest
.
haha, что действительно помогает много = D – Gino
Появилась новая ошибка (ImportError: No module named pyramid.paster), когда я пытался запустить $ python -m unittest -v test_demo. Я использую python 3.2 – Gino
Используйте питон из virtualenv, в котором вы установили пирамиду. –