python - 仅针对一个子类的 Python unittest 跳过测试
问题描述
假设我的单元测试设置如下:
import unittest
class BaseTest(object):
def setup(self):
self.foo = None
def test_something(self):
self.assertTrue(self.foo.something())
def test_another(self):
self.assertTrue(self.foo.another())
def test_a_third_thing(self):
self.assertTrue(self.foo.a_third_thing())
class TestA(BaseTest, unittest.TestCase):
def setup(self):
self.foo = FooA()
class TestB(BaseTest, unittest.TestCase):
def setup(self):
self.foo = FooB()
class TestC(BaseTest, unittest.TestCase):
def setup(self):
self.foo = FooC()
现在假设FooC
还没有a_third_thing
实现,我只想跳过test_a_third_thing
这TestC
门课。有什么方法可以使用@unittest.skipif
装饰器来做到这一点?或者其他一些方便的方法可以只为这个类跳过这个测试?
Python 2.7,以防万一
解决方案
您不能@unittest.skipif
在此处使用,因为它是在模块期间评估的,并且需要在运行时运行检查。
要达到预期的结果,您test_a_third_thing
的基类应如下所示:
class BaseTest(unittest.TestCase):
def test_a_third_thing(self):
if not getattr(self.foo, "a_third_thing", None):
self.skipTest(self.foo.__class__.__name__ + ' has no a_third_thing, skip')
else:
self.assertTrue(self.foo.a_third_thing())
还将您示例中的拼写错误修复setup
为setUp
. 从测试类的继承列表中删除“unittest.TestCase”并添加到基类中。
推荐阅读
- python-3.x - Flask 中返回的字典显示空花括号
- node.js - 如何将节点服务器上的静态文件请求代理到我的反应开发服务器?
- filter - Tableau:如何将下拉筛选器限制为以“2021*”开头的字段(每周添加一个新字段的财政周字段)?
- javaagents - 如何在不启用 javaagent 的情况下运行 Open Liberty:wlp/bin/tools/ws-javaagent.jar?
- google-analytics - 用于跟踪应用租户和用户活动的 Google Analytics 4 自定义数据
- javascript - 选择单选按钮后如何打印所有 ASCII 或 EBCDIC 值
- c# - C# asp.net 将具有长属性的对象传递给前端会更改它的值
- c# - 删除输入文本的所有内容,在 Blazor 中不使用 @bind
- javascript - 制作卡车和按钮以提高速度,通过 jQuery 使用 html/js 改变方向
- android - Kotlin Flow 超时结果