【问题标题】:How to decorate child clases methods from base class?如何从基类装饰子类方法?
【发布时间】:2017-07-11 11:39:39
【问题描述】:

我有基本测试用例类,它的子类应该用片状装饰器 (https://github.com/box/flaky) 进行装饰,换句话说,我想将片状装饰器应用于每个测试用例(测试方法),但要从基类开始,使用单一的地方而不是装饰每个测试类或测试用例(有很多测试用例......)。

但是,如果我将装饰器应用于基类 CustomTestCase,它将影响每个方法(包括辅助方法、构造函数等)。是否可以仅将其应用于基类的测试用例(方法以“测试”开头)。我试图通过访问 CustomTestCase.setUp 中的 self._testMethod 来做到这一点,但没有成功。

# base class
@flaky(max_runs=3, min_passes=1)
class CustomTestCase(SimpleTestCase):
    """
    base class for tests using Selenium.
    """
    @classmethod
    def setUpClass(cls):
        pass

    def setUp(self):
        pass


# child class - test suite
class TestSomething(CustomTestCase):
    """
    This class contains all different tests
    """
    def test_something(self):
        """ should be decorated by flaky """
        self.assertEqual(1, randint(0, 1))

    def test_another(self):
        self.assertEqual(1, randint(0, 1))

【问题讨论】:

    标签: python unit-testing


    【解决方案1】:

    其实SetUp方法运行两次都没有问题。关于辅助方法,它不应该被重新执行。所以一切正常

    【讨论】:

      猜你喜欢
      • 2013-05-23
      • 2019-11-06
      • 2019-11-27
      • 2021-07-18
      • 2014-01-14
      • 2020-11-24
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多