根据什么测试用例切换装饰器的顺序 运行?
Switch order of decorators based on what test case is running?
为了测试一个功能标志,我mocking/patching两个功能都打了补丁
但是,每当我切换这些模拟装饰器的顺序时,都会导致一些测试失败。当我再次切换它们时,那些失败的测试通过了,而之前通过的测试失败了。
据我所知,这是由于装饰器在 Python 中的评估顺序所致。
有没有办法 declare/specify 对于一个特定的测试应该首先评估哪个装饰器?
@mock.patch.object(MyMockClass, '_some_function', return_value=False)
@mock.patch.object(MyMockClass, '_another_function', return_value=False)
class MyClassTestCase(TestCase):
# code...
您可以将装饰器单独应用于 MyClassTestCase
class 的每个方法,从而指定为每个方法评估装饰器的顺序。
基本变化:
@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
为了测试一个功能标志,我mocking/patching两个功能都打了补丁
但是,每当我切换这些模拟装饰器的顺序时,都会导致一些测试失败。当我再次切换它们时,那些失败的测试通过了,而之前通过的测试失败了。
据我所知,这是由于装饰器在 Python 中的评估顺序所致。
有没有办法 declare/specify 对于一个特定的测试应该首先评估哪个装饰器?
@mock.patch.object(MyMockClass, '_some_function', return_value=False)
@mock.patch.object(MyMockClass, '_another_function', return_value=False)
class MyClassTestCase(TestCase):
# code...
您可以将装饰器单独应用于 MyClassTestCase
class 的每个方法,从而指定为每个方法评估装饰器的顺序。
基本变化:
@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