0

アプリケーションの Django でテストを実行すると、次の例外が発生します。

.......NameError: global name 'STDOUT_LINE' is not defined

テスト ケースには 9 つのテスト メソッドしかありません。

この問題の原因は何ですか? 誰かがすでにこの種の問題に直面している可能性がありますか?

詳細出力

$ : ./manage.py test profile
/Users/sultan/.virtualenvs/yoda/lib/python2.7/site-packages/nose/util.py:14: DeprecationWarning: The compiler package is deprecated and removed in Python 3.x.
  from compiler.consts import CO_GENERATOR

nosetests --verbosity 1 profile --verbosity=2 --with-snot --with-xtraceback --with-coverage --cover-package=profile
/Users/sultan/.virtualenvs/yoda/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:53: RuntimeWarning: SQLite received a naive datetime (2013-04-22 11:19:12.808338) while time zone support is active.
  RuntimeWarning)

Creating test database for alias 'default'...
Test page to create order ... ok
Test with anonymous user, index page should give a login form ... ok
Test with anonymous user, index page should give a login form ... ok
Test drivers list ... ok
Test operators list ... ok
Test if login works ... ok
Test if user logged in as manager will be redirected to /manager page ... ok
Test if user logged in as operator will be redirected to /operator page ... NameError: global name 'STDOUT_LINE' is not defined

URL の更新テスト

# -*- coding: utf-8 -*-
from django.test import TestCase
from django.core.urlresolvers import reverse

from profile.tests.factories import UserFactory
from profile.models import ROLE_OPERATOR, ROLE_USER
from profile.models import ROLE_ADMIN, ROLE_DRIVER, ROLE_MANAGER


class TestUrls(TestCase):
    """ Test common project wide urls """

    def setUp(self):
        self.user = UserFactory.create(role=ROLE_USER)
        self.admin = UserFactory.create(role=ROLE_ADMIN, is_superuser=True)
        self.driver = UserFactory.create(role=ROLE_DRIVER)
        self.manager = UserFactory.create(role=ROLE_MANAGER)
        self.operator = UserFactory.create(role=ROLE_OPERATOR)

    def get(self, url, follow=True):
        return self.client.get(url, follow=follow)

    def login(self):
        self.client.login(username=self.manager.username, password='pass')

    def test_index_page_login(self):
        """ Test with anonymous user, index page should give a login form """
        res = self.get(reverse('profile:index'))
        self.assertContains(res, 'Login')
        self.assertEqual(res.status_code, 200)

    def test_login(self):
        """ Test if login works """
        res = self.get(reverse('profile:login'))
        res2 = self.get(reverse('profile:login'), follow=False)
        self.assertEqual(res.status_code, 200)
        self.assertEqual(res2.status_code, 302)

    def test_operator_redirect(self):
        """
        Test if user logged in as operator
        will be redirected to /operator page
        """
        self.login()
        res = self.get(reverse('profile:index'))
        self.assertTrue('/operator' in res.request['PATH_INFO'])

    def test_manager_redirect(self):
        """
        Test if user logged in as manager
        will be redirected to /manager page
        """
        self.login()
        res = self.get(reverse('profile:index'))
        self.assertTrue('/manager' in res.request['PATH_INFO'])

    def test_references_page(self):
        """ Test references """
        self.login()
        res = self.get(reverse('profile:reference'))
        self.assertEqual(res.status_code, 200)
        self.assertTemplateUsed('profile/reference.html')

    def test_list_drivers(self):
        """ Test drivers list """
        self.login()
        res = self.get(reverse('profile:drivers'))
        self.assertEqual(res.status_code, 200)
        self.assertTemplateUsed('profile/driver_list.html')

    def test_list_operators(self):
        """ Test operators list """
        self.login()
        res = self.get(reverse('profile:operators'))
        self.assertEqual(res.status_code, 200)
        self.assertTemplateUsed('profile/operator_list.html')

    def test_error500(self):
        """ Test with anonymous user, index page should give a login form """
        res = self.get(reverse('profile:error500'))
        self.assertEqual(res.status_code, 200)

    def test_create_order_page(self):
        """ Test page to create order """
        res = self.get(reverse('profile:new_order'), follow=False)
        self.assertEqual(res.status_code, 302)

        self.login()

        res = self.get(reverse('profile:new_order'))
        self.assertEqual(res.status_code, 200)
4

1 に答える 1

0

でアサーションが失敗したため、問題は解決しました

def test_operator_redirect(self):
    """ Test if user logged in as operator will be redirected to /operator page """
    self.login(self.operator)
    res = self.get(reverse('taxi:index'))
    self.assertTrue('/operator' in res.request['PATH_INFO'])

だから私は方法を変更しましたが、失敗self.loginするとこのエラーが再び表示されますが、うまくいきましたself.assertTrue

def login(self, user):
    self.client.login(username=user.username, password='pass')
于 2013-04-22T05:42:25.590 に答える