从运行测试中停止抽象django.test TestCase类

时间:2017-11-20 21:41:16

标签: django unit-testing abstract-class testcase

我正在创建Django单元测试,并且有一些具有重复功能的非常相似的模型。但是有一些差异,所以我创建了一个其他TestCase类继承的抽象BaseTestCase类。它似乎工作得很好,除了当从BaseTestCase类继承的TestCases完成运行测试时,Django仍然会尝试运行BaseTestCase类测试。 Django不应该不想在抽象的BaseTestCase上运行测试吗?我是否缺少某种类型的配置以确保不会发生这种情况?

测试用例布局

class BaseTestCase(SetupTestCase):
    api = ""

    def test_obj_list(self):
        response = self.client.get(self.api)

        self.assertTrue(response.status_code == 200)

    def test_obj_create(self):
        pass

    def test_obj_retrieve(self):
        pass

    def test_obj_update(self):
        pass

    def test_obj_delete(self):
        pass

    class Meta:
        abstract = True

class ChildTestCaseOne(BaseTestCase):
    api = "/api/v0.1/path_one/"

class ChildTestCaseTwo(BaseTestCase):
    api = "/api/v0.1/path_two/"

class ChildTestCaseThree(BaseTestCase):
    api = "/api/v0.1/path_three/"

class ChildTestCaseFour(BaseTestCase):
    api = "/api/v0.1/path_four/"

class ChildTestCaseFive(BaseTestCase):
    api = "/api/v0.1/path_five/"

这应该运行25次测试,对5个测试用例进行5次测试,但是运行30次。在为每个子类运行5次测试之后,它还运行基础测试用例的5次测试。

1 个答案:

答案 0 :(得分:4)

multiple inheritance怎么办?

from django.test import TestCase

class BaseTestCase:
    # ...

class ChildTestCaseN(BaseTestCase, TestCase):
    # ...

我在Django中找不到任何关于抽象测试用例的内容。 ¿你从哪里得到SetupTestCase课程?