Django 애플리케이션을 테스트하기 위해 Fixture를 로드하는 트릭
픽스처를 생성하고 INSTALLED_APPS 중 하나의 픽스처 디렉토리에 배치하면 django.test.TestCase 하위 클래스에 조명기 클래스 속성을 지정하여 단위 테스트에서 이를 사용할 수 있습니다.
from django.test import TestCase
from myapp.models import Animal
class AnimalTestCase(TestCase):
fixtures = ['myfixture.json']
def setUp(self):
# Test definitions as before.
call_setup_methods()
def testFluffyAnimals(self):
# A test that uses the fixtures.
call_some_test_code()
그러나 setUpClass()를 추가해야 하는 경우 고정 장치가 작동하지 않습니다.
사실 setUpcClass()가 실행되기 전에는 픽스처를 삽입할 수 없습니다.
이 문제를 해결하기 위해 setUpClass() 메소드에서 "python admin.py loaddata myfixture.json"명령을 호출할 수 있습니다.
from django.test import TestCase
from myapp.models import Animal
from django.core import management
class AnimalTestCase(TestCase):def setUpClass(cls):
# use command to load fixture
management.call_command("loaddata", "myfixture.json")
call_setup_methods()
def testFluffyAnimals(self):
# A test that uses the fixtures.
call_some_test_code()
이 프로젝트가 PyDev에서 개발 및 테스트되지 않았더라도 지금은 괜찮습니다.
그렇지 않으면 Eclipse PyDev에서 "run as unittest"를 클릭하여 테스트 케이스를 실행할 때 Fixture에 또 다른 유선 문제가 있으며 testCase 클래스의 setUpClass()를 제외한 다른 테스트 메소드에서는 Fixture 데이터가 작동하지 않습니다. 아래와 같이 코드를 수정해야 합니다.
from django.test import TestCase
from myapp.models import Animal
from django.core import management
class AnimalTestCase(TestCase):
fixtures = ['myfixture.json']
def setUpClass(cls):
# use command to load fixture
management.call_command("loaddata", "myfixture.json")
call_setup_methods()
def testFluffyAnimals(self):
# A test that uses the fixtures.
call_some_test_code()
이유가 명확하지 않거나 PyDev에 약간의 결함이 있거나 내 오해일 수 있습니다. 어떤 제안이든 환영합니다!
재인쇄: https://www.cnblogs.com/Alex-Python-Waiter/archive/2012/10/30/2747142.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.