python - 根据正在运行的测试用例切换装饰器的顺序?
问题描述
为了测试功能标志,我正在使用补丁模拟/修补两个函数。
但是,每当我切换这些模拟装饰器的顺序时,都会导致一些测试失败。当我再次切换它们时,那些失败的测试通过并且之前通过的测试失败。
据我所知,这是由于 Python 中装饰器的评估顺序所致。
有没有办法为一个特定的测试声明/指定应该首先评估哪个装饰器?
@mock.patch.object(MyMockClass, '_some_function', return_value=False)
@mock.patch.object(MyMockClass, '_another_function', return_value=False)
class MyClassTestCase(TestCase):
# code...
解决方案
您可以将装饰器单独应用于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
推荐阅读
- vb.net - MaskedTextBox 的下划线消失
- php - Laravel 策略发送 403 进行更新,发送 201 进行创建
- c++ - 使用 OpenSSL 将 CRL 号码扩展添加到 CRL
- android - Jetpack Compose Lottie 动态文本和图像
- design-patterns - 按特定名称过滤列并保存为 fasta.file
- php - 获取 woocommerce 属性术语图像
- php - 尝试从应用程序连接到远程数据库时连接超时
- javascript - 如何使用jQuery在表的同一行中附加td
- angular - window.scrollBy() 在角模态 afterClosed() 内无法正常工作
- c# - 我无法使用 c# 获取实时数据