Django:保持 setUpTestData 干燥
Django: Keeping setUpTestData DRY
我真的很享受 Django 1.8 中 setUpTestData 和 --keepdb 带来的便利!
但是,我 运行 遇到了在多个测试文件中保持数据一致的问题。我想将我的 setUpTestData 类方法放在一个位置,并让我的每个测试文件都引用它,这样我就不必 copy/paste 更改每个单独的测试文件。
我对如何去做有点困惑,特别是关于类方法,它似乎阻止我从另一个文件导入我的 setUpTestData 函数。有人能帮我吗?先谢谢了!
当前测试文件
from django.test import TestCase
from models import SpecificModel
class TestData(TestCase):
@classmethod
def setUpTestData(cls):
cls.test_item = SpecificModel.objects.create(data="some data")
设置数据文件
???
能不能只继承声明方法的TestDataclass?
base_tests.py
from django.test import TestCase
from models import SpecificModel
class TestData(TestCase):
@classmethod
def setUpTestData(cls):
cls.test_item = SpecificModel.objects.create(data="some data")
specific_tests.py
from .base_tests import TestData
class SubclassOfTestData(TestData):
# Inherits `setUpTestData`
pass
我认为下面的方法很好用并且克服了@KlausCPH 和@Aseem 遇到的问题。我宁愿评论马克的回答,但没有足够的声誉。
base_tests.py
from django.test import TestCase
from models import SpecificModel
class TestData(TestCase):
def setUp(self):
self.test_item = SpecificModel.objects.create(data="some data")
specific_tests.py
from .base_tests import TestData
class SubclassOfTestData(TestData):
def setUp(self):
super(SubclassOfTestData, self).setUp()
# any other setup specific for this class
# eg: self.foo = 'bar'
def test_etc(self):
pass
我真的很享受 Django 1.8 中 setUpTestData 和 --keepdb 带来的便利!
但是,我 运行 遇到了在多个测试文件中保持数据一致的问题。我想将我的 setUpTestData 类方法放在一个位置,并让我的每个测试文件都引用它,这样我就不必 copy/paste 更改每个单独的测试文件。
我对如何去做有点困惑,特别是关于类方法,它似乎阻止我从另一个文件导入我的 setUpTestData 函数。有人能帮我吗?先谢谢了!
当前测试文件
from django.test import TestCase
from models import SpecificModel
class TestData(TestCase):
@classmethod
def setUpTestData(cls):
cls.test_item = SpecificModel.objects.create(data="some data")
设置数据文件
???
能不能只继承声明方法的TestDataclass?
base_tests.py
from django.test import TestCase
from models import SpecificModel
class TestData(TestCase):
@classmethod
def setUpTestData(cls):
cls.test_item = SpecificModel.objects.create(data="some data")
specific_tests.py
from .base_tests import TestData
class SubclassOfTestData(TestData):
# Inherits `setUpTestData`
pass
我认为下面的方法很好用并且克服了@KlausCPH 和@Aseem 遇到的问题。我宁愿评论马克的回答,但没有足够的声誉。
base_tests.py
from django.test import TestCase
from models import SpecificModel
class TestData(TestCase):
def setUp(self):
self.test_item = SpecificModel.objects.create(data="some data")
specific_tests.py
from .base_tests import TestData
class SubclassOfTestData(TestData):
def setUp(self):
super(SubclassOfTestData, self).setUp()
# any other setup specific for this class
# eg: self.foo = 'bar'
def test_etc(self):
pass