тестирование веб-приложения django - PullRequest
1 голос
/ 05 апреля 2011


У меня есть следующее в tests.py.

def setUp(self):
    self.client = Client()
    self.client.get('/homepage',{'join':'NPO2','siteid':1450})
    self.client.session.save()
    self.oraganisation_list = ['NPO1','NPO2','NPO3']
    self.pay_recursion_list = ['annual','monthly','bi-annual','quarter']
def test_paytermpage(self):
    for org in self.organisation_list:
        response = self.client.get('',{'join':org,'siteid':1450})
        self.failUnlessEqual(response.status_code,200)
        self.assertTemplateUsed(response,'some.html')
def test_infopage(self):
    for term in self.pay_recurstion_list:
        response = self.client.post('',{'pay-term':term,'submit':'payterm'})
        self.failUnlessEqual(response.status_code,200)

test_infopage () завершается ошибкой, и вот обратная трассировка.

Traceback (most recent call last):
  File "/var/lib/django/bsdata/shoppingcart/tests.py", line 50, in test_infopage
    response = self.client.post('',{'pay-term':term,'submit':'payterm'})
  File "/usr/lib/pymodules/python2.6/django/test/client.py", line 313, in post
    response = self.request(**r)
  File "/usr/lib/pymodules/python2.6/django/core/handlers/base.py", line 92, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/var/lib/django/.../views.py", line 22, in start
    term,costdict,webobj = costInfo(request)
  File "/var/lib/django/...views.py", line 238, in getCostInfo
    cost_dict = Site.objects.getDict(request.session['siteid']) 
  File "/var/lib/django/.../managers.py", line 16, in getLoadedDict
    siteobj = Site.objects.get(pk=agent)
  File "/usr/lib/pymodules/python2.6/django/db/models/manager.py", line 120, in get
    return self.get_query_set().get(*args, **kwargs)
  File "/usr/lib/pymodules/python2.6/django/db/models/query.py", line 305, in get
    % self.model._meta.object_name)
DoesNotExist: Site matching query does not exist.

Я сделал отладку, чтобы увидеть, какое значение 'agent' в siteobj = Site.objects.get (pk = agent) получает правильное целое число.

Удивительно, но они оба работают, когда тестируются с такой оболочки

setup_test_environment()
client = Client()
client.get('/shoppingcart',{'join':'NPO1','siteid':1450})
client.session.save()
oraganisation_list = ['NPO1','NPO2','NPO3']
pay_recursion_list = ['annual','monthly','bi-annual','quarter']
for org in oraganisation_list:
    response = client.get('',{'join':org,'siteid':1450})
    TestCase.failUnlessEqual(t,response.status_code,200)
for term in pay_recursion_list:
    response = client.post('',{'pay-term':term,'submit':'payterm'})
    TestCase.failUnlessEqual(t,response.status_code,200)

Извините за слишком много информации, не знаю, как объяснить лучше. Любые идеи будут очень полезны для этого новичка. Спасибо.

Ответы [ 2 ]

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

Бегущий по тестам Django использует базу данных, отличную от ваших производственных данных. Если для вашего сайта требуется, чтобы сайт существовал, вы должны либо добавить его в свой набор тестов, либо вам требуется устройство, загружающее сайт.

0 голосов
/ 05 апреля 2011

Попробуйте добавить "SITE_ID = 1" в свои настройки. Это часть каркаса сайтов .

...