我正在创建DJANGO单元测试,并具有一些非常相似的模型,具有重复的功能。但是,有一些差异,因此我创建了其他TestCase类从中继承的抽象basetestcase类。似乎工作正常,除了这样一个事实,即当从Basetestcase类中继承的测试算盘运行测试时,Django仍将尝试运行Basetestcase类测试。 Django不想不想在抽象的底壳上运行测试吗?我是否缺少某种类型的配置来确保不会发生这种情况?

问题描述 投票:0回答:2

多元遗传

from django.test import TestCase

class BaseTestCase:
    # ...

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

我在Django中找不到有关抽象测试用例的任何信息。你从哪里得到
django unit-testing abstract-class testcase
2个回答
7
投票
班?

如果您还想继续使用基础类中的方法,则可以通过使用过滤器仅运行以特定模式开头的类(例如
TestCase
)来覆盖默认的

TestLoader

Test*


0
投票
test.py

from typing import ClassVar

from django.test import TestCase


class BaseTestCase(TestCase):
    api: ClassVar[str]

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

        self.assertTrue(response.status_code == 200)

    def test_obj_create(self) -> None:
        pass

    def test_obj_retrieve(self) -> None:
        pass

    def test_obj_update(self) -> None:
        pass

    def test_obj_delete(self) -> None:
        pass


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


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


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


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


class TestCaseFive(BaseTestCase):
    api = "/api/v0.1/path_five/"
custom_test_runner.py

from unittest import TestLoader from unittest.suite import TestSuite from django.test.runner import DiscoverRunner class CustomTestLoader(TestLoader): def loadTestsFromTestCase(self, *args, **kwargs) -> TestSuite: return TestSuite( test for test in super().loadTestsFromTestCase(*args, **kwargs) if test.__class__.__name__.startswith("Test") ) class CustomTestRunner(DiscoverRunner): test_loader = CustomTestLoader()

settings.py

TEST_RUNNER = "path.to.custom_test_runner.CustomTestRunner"

    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.