为了测试功能标记,我正在使用patch模拟/修补两个函数。
但是,每当我切换这些模拟装饰器的顺序时,都会导致某些测试失败。当我再次切换它们时,那些失败的测试通过,而先前通过的测试失败。
据我所知,这是由于在Python中评估装饰器的顺序所致。
有没有一种方法可以为一个特定的测试声明/指定哪个装饰器应该首先评估?
@mock.patch.object(MyMockClass, '_some_function', return_value=False)
@mock.patch.object(MyMockClass, '_another_function', return_value=False)
class MyClassTestCase(TestCase):
# code...
答案 0 :(得分:1)
您可以将装饰器分别应用于MyClassTestCase
类的每个方法,从而指定评估每种方法的装饰器的顺序。
基本更改:
@mock.patch.object(MyMockClass, '_some_function', return_value=False)
@mock.patch.object(MyMockClass, '_another_function', return_value=False)
class MyClassTestCase(TestCase):
def test_that_it_works(self, *args):
# do test stuff
收件人:
class MyClassTestCase(TestCase):
@mock.patch.object(MyMockClass, '_some_function', return_value=False)
@mock.patch.object(MyMockClass, '_another_function', return_value=False)
def test_that_it_works(self, mock_another, mock_some):
# do test stuff