Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django don';我跑不好_Python_Django_Django Unittest - Fatal编程技术网

Python django don';我跑不好

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

我希望在django项目的test.py中有不同的Testcase类。一个用于模型测试(crud),一个用于视图测试等。我有以下几个类

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类?