【发布时间】:2018-08-27 17:44:21
【问题描述】:
背景
在 Python 的 unittest 框架中,在基本测试集上使用继承来将整套测试应用于新问题并偶尔添加额外的测试是一种相当常见的习惯用法。一个简单的例子是:
from unittest import TestCase
class BaseTestCase(TestCase):
VAR = 3
def test_var_positive(self):
self.assertGreaterEqual(self.VAR, 0)
class SubTestCase(BaseTestCase):
VAR = 8
def test_var_even(self):
self.assertTrue(self.VAR % 2 == 0)
在运行时会运行 3 个测试:
$ python -m unittest -v
test_var_positive (test_unittest.BaseTestCase) ... ok
test_var_even (test_unittest.SubTestCase) ... ok
test_var_positive (test_unittest.SubTestCase) ... ok
----------------------------------------------------------------------
Ran 3 tests in 0.000s
如果您正在测试一个类层次结构,这特别有用,其中每个子类 is a 子类型都是父类的子类型,因此除了自己的测试套件之外,还应该能够通过父类的测试套件。
问题
我想改用pytest,但我有很多测试都是这样组织的。据我所知,pytest 打算用fixture 替换TestCase 类的大部分功能,但是是否有允许测试继承的pytest 习语,如果有,它是什么?
我知道pytest 可用于运行unittest 样式的测试,但the support is limited,我想在我的测试中使用pytest 的一些“永远不会被支持”的功能.
【问题讨论】:
标签: python unit-testing pytest python-unittest