Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 测试子类行为?_Python_Unit Testing_Testing - Fatal编程技术网

Python 测试子类行为?

Python 测试子类行为?,python,unit-testing,testing,Python,Unit Testing,Testing,我创建了4个类的协作(Python) 我在4个测试用例中编写了60个测试方法,这是一项艰苦的工作 因为B、C、D没有提供太多的行为,所以A、B、C、D类应该被子类化以添加新的行为 问题是: 我编写了很多测试代码,以确保A、B、C、D正确配合。 如果我将子类A、B、C、D划分为A2、B2、C2、D2,我需要以测试A、B、C、D的相同方式测试A2、B2、C2、D2的行为 我该怎么做 每次我创建数据库的新子类时,都要对所有单元测试进行子类化 通过方法生成测试用例和套件 您的做法是什么,以确保子类数据

我创建了4个类的协作(Python)

我在4个测试用例中编写了60个测试方法,这是一项艰苦的工作

因为B、C、D没有提供太多的行为,所以A、B、C、D类应该被子类化以添加新的行为

问题是:

我编写了很多测试代码,以确保A、B、C、D正确配合。 如果我将子类A、B、C、D划分为A2、B2、C2、D2,我需要以测试A、B、C、D的相同方式测试A2、B2、C2、D2的行为

我该怎么做

  • 每次我创建数据库的新子类时,都要对所有单元测试进行子类化
  • 通过方法生成测试用例和套件
  • 您的做法是什么,以确保子类数据库正常工作并且没有错误

    给定:单元测试、数据库类和子类

    现在存在的测试:

    class TestA(unittest.TestCase):
        A = A
        def setUp(self):
            self.a = self.A()
        def test_something(self):
            ...
    
    class MockB(A.B):
        ...
    class AWithMock(A):
        B = MockB
    class TestAWithMock(TestA):
        A = AWithMock
        def setUp(self):
            self.a = self.A()
        def test_something_new(self):
            ...
    
    class MockB2(A.B):
        ...
    class MockC2(A.C):
        ...
    class MockD2(A.D):
        ...
    class TestWithMock(unittest.TestCase):
        def test_b(self):
            b = MockB2()
            ...
        def test_c(self):
            ...
        def test_d(self):
            ...
    
    现在定义一个子类A2:

    class A2(A):
        ...
    
    我将对您的测试用例进行子类化,但只覆盖
    setUp
    /
    setUp
    方法,因为子类
    A2
    的其余API应该与
    A
    一致

    因此,您的测试子类将是:

    class TestA2(TestCaseA):
        def setUp(self):
            self.thing = A2()
    

    听起来像是我的家庭作业/作业。。。如果我错了,请纠正我……如果不是,语言很难理解,你能不能再花几分钟写下你的问题,让我们理解它?错了,这只是我给它的形式。但对-我在家里做这件事。我将删除视图中的领域知识,使其更抽象。包括你的工作。显示您正在尝试的内容和不起作用的内容。如果
    TestWithMock
    ,您会怎么做?如果没有看到一些代码,我看不出子类
    a
    的mock对
    A2
    也不起作用的任何原因。当然,您也可以在
    设置
    方法中设置模拟,以便模拟可以随每个
    测试用例
    而变化。我也会这样做。还有其他的可能性吗?
    class A2(A):
        ...
    
    class TestA2(TestCaseA):
        def setUp(self):
            self.thing = A2()