背景
在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的某些“永远不会被支持”功能.
解决方法:
Pytest允许您将测试用例按类分组,因此它自然支持测试用例继承.
在将单元测试测试重写为pytest测试时,请记住遵循pytest’s naming guidelines:
>类名必须以Test开头
>函数/方法名称必须以test_开头
不遵守此命名方案将阻止收集和执行测试.
为pytest重写的测试如下所示:
class TestBase:
VAR = 3
def test_var_positive(self):
assert self.VAR >= 0
class TestSub(TestBase):
VAR = 8
def test_var_even(self):
assert self.VAR % 2 == 0
原文地址:https://codeday.me/bug/20191108/2009191.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。