Python django don';我跑不好
我希望在django项目的test.py中有不同的Testcase类。一个用于模型测试(crud),一个用于视图测试等。我有以下几个类Python django don';我跑不好,python,django,django-unittest,Python,Django,Django Unittest,我希望在django项目的test.py中有不同的Testcase类。一个用于模型测试(crud),一个用于视图测试等。我有以下几个类 class EntryModelTest(TestCase): LOG = logging.getLogger(__name__) @classmethod def setup_database(cls): #database initialization @classmethod def setUpC
class EntryModelTest(TestCase):
LOG = logging.getLogger(__name__)
@classmethod
def setup_database(cls):
#database initialization
@classmethod
def setUpClass(cls):
super(EntryModelTest, cls).setUpClass()
cls.setup_database()
cls.myModel = MyModel.objects.get(pk=1)
#some queries (additions) that use things that were added in setup_database()
还有第二个测试用例
class MyCalViewsTest(TestCase):
LOG = logging.getLogger(__name__)
@classmethod
def setup_database(cls):
#exactly the same code as above testcase(I know I could use Inheretiance. Will refactor)
@classmethod
def setUpClass(cls):
#The same as above testcase
cls.myModel = MyModel.objects.get(pk=1) #this gives the following error: DoesNotExist: PracticeData matching query does not exist.
MyModel实例是在setup_数据库方法中创建的。我不太清楚为什么。如果测试数据库在每个testcase类执行后被破坏,那么setup_数据库方法应该已经用pk=1重新创建了MyModel实例,这样我就存在了。如果它没有破坏测试数据库,那么pk=1的MyModel实例已经存在,所以我也不会有任何问题。任何帮助都将不胜感激 这是非常不清楚的。setup\u数据库方法做什么?Django的TestCase类已经创建了数据库,并负责在每次测试后截断它。为什么要重置pk自动增量序列?setup_数据库只会创建一些模型实例。如果测试数据库在每个测试类之后都被破坏,我希望th pk autoincrement序列会被重置。如果不是这样,那么pk=1的MyModel对象应该已经存在于我的测试数据库中,因此它不应该给我错误。但是,您的测试显示情况并非如此,文档中没有任何内容声称它确实发生过。数据库是空的,没有被破坏。你为什么不使用
mommy.make(MyModel,my_controlled_attribute='value')
@DanielRoseman测试在单独运行时有效,但在一起运行时无效。文档说明,当所有测试都完成()时,数据库将被销毁。我问你是否知道什么是测试。Testcase类中的测试方法?testcase类?