Django 1.8로 업데이트 - 특성 오류: django.test.TestCase에 'cls_atomics' 특성이 없습니다.
나는 Django 1.7 프로젝트를 Django 1.8로 업데이트했고 이제 테스트를 실행할 때 오류가 발생합니다(이것은 하위 클래스입니다).django.test.TestCase
).
Traceback (most recent call last):
File "env\lib\site-packages\django\test\testcases.py", line 962, in tearDownClass
cls._rollback_atomics(cls.cls_atomics)
AttributeError: type object 'SomeTests' has no attribute 'cls_atomics'
테스트를 통해 디버그하면 모든 줄을 문제 없이 통과할 수 있지만 마지막 줄 이후에는 예외가 발생합니다.
다음은 테스트 예제입니다.
import django
import unittest
from django.test import TestCase
import logging
import sys
from builtins import classmethod, isinstance
class ATestTests(TestCase):
@classmethod
def setUpClass(cls):
django.setup()
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
def setUp(self):
self._app = Application(name="a")
def testtest(self):
self.assertIsNotNone(self._app)
내 환경:
astroid==1.3.4
colorama==0.3.3
defusedxml==0.4.1
Django==1.8
django-extensions==1.5.2
django-filter==0.9.2
djangorestframework==3.0.5
djangorestframework-xml==1.0.1
eight==0.3.0
future==0.11.4
logilab-common==0.63.2
Markdown==2.5.2
pylint==1.4.1
python-dateutil==2.4.1
python-mimeparse==0.1.4
six==1.9.0
xmltodict==0.9.2
이걸 어떻게 고칠 수 있을까요?
나는 그 이유가 너의setUpClass(cls)
클래스 메서드가 super를 호출하지 않습니다.그것 때문에,django.tests.TestCase.setUpClass
호출되지 않음
cls.cls_atomics = cls._enter_atomics()
호출되지 않음, 자연적으로 발생합니다.cls_atomics
정의할 수 없습니다.
추가해야 합니다.super(ATestTests, cls).setUpClass()
당신에게setUpClass
.
Django 1.8+의 경우 다음을 사용해야 합니다.TestCase.setUpTestData
대신에TestCase.setUpClass
.
class MyTests(TestCase):
@classmethod
def setUpTestData(cls):
# Set up data for the whole TestCase
cls.foo = Foo.objects.create(bar="Test")
def test1(self):
self.assertEqual(self.foo.bar, 'Test')
설명서는 여기에 있습니다.
저도 비슷한 문제가 있었습니다.TestCase
사용했다setUpClass
하지만 가지고 있지 않았습니다.tearDownClass
방법.빈 테스트를 추가하면 테스트에 통과합니다.
@classmethod
def tearDownClass(cls):
pass
나 또한 전화하지 않습니다.django.setup
.
(@J.C.가 제안한 바와 같이) 기본 클래스에 대한 호출이 포함된 전체 코드입니다. 레이탕):
import django
import unittest
from django.test import TestCase
import logging
import sys
from builtins import classmethod
class ATestTests(TestCase):
@classmethod
def setUpClass(cls):
super(ATestTests, cls).setUpClass()
django.setup()
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
def setUp(self):
self._app = Application(name="a")
def testtest(self):
self.assertIsNotNone(self._app)
언급URL : https://stackoverflow.com/questions/29653129/update-to-django-1-8-attributeerror-django-test-testcase-has-no-attribute-cl
'programing' 카테고리의 다른 글
Postgre에서 열의 데이터 유형을 변경하는 방법SQL 테이블? (0) | 2023.05.04 |
---|---|
개인 저장소를 "구입"하는 올바른 방법은 무엇입니까? (0) | 2023.05.04 |
를 사용하여 인터넷 연결을 확인하는 가장 좋은 방법은 무엇입니까?NET? (0) | 2023.05.04 |
INDIRECT를 사용한 동적 차트 범위: 해당 기능이 유효하지 않습니다(범위가 강조 표시되었음에도 불구하고). (0) | 2023.05.04 |
Git: 원격 저장소 Git를 복제하는 동안 호스트 github.com 오류를 확인할 수 없습니다. (0) | 2023.05.04 |