django - 也停止运行测试的抽象 django.test TestCase 类

标签 django unit-testing abstract-class testcase

我正在创建 Django 单元测试,并且有一些非常相似的模型具有重复的功能。但是有一些不同,所以我创建了一个抽象的 BaseTestCase 类,其他 TestCase 类从中继承。它似乎工作正常,除了当从 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 个测试。

最佳答案

multiple inheritance呢? ?

from django.test import TestCase

class BaseTestCase:
    # ...

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

我在 Django 中找不到任何关于抽象测试用例的信息。您从哪里得到 SetupTestCase 类?

关于django - 也停止运行测试的抽象 django.test TestCase 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47401578/

相关文章:

c++ - C++中的类接口(interface)继承

django - 在 Django 中将图像字段添加到 XML 站点地图

python - Django:登录后重定向到上一页*使用查询字符串*

C#单元测试代码问题继续

java - 测试 JAX-RS Web 服务?

c++ - 何时在抽象类 cpp 中声明 protected 字段

django - 使用 ElasticSearch 作为 Django 的数据库/存储

jquery - "Best"将 Django 与 Ajax 库集成的方法

java - 如何使用 JMockIt 对 Log4j 进行单元测试?

c# - 如何确定哪个继承类正在使用抽象类的方法