📅  最后修改于: 2023-12-03 15:19:22.616000             🧑  作者: Mango
在进行软件开发时,测试是必不可少的步骤之一。通过测试,我们可以发现软件中的缺陷并及时修复。在 Python 中,我们可以使用各种测试框架来执行测试。但是,在某些情况下,测试可能失败,这可能是因为我们尚未解决某些问题或者某些外部因素的影响。虽然测试失败不是一个好的信号,但有时我们必须忽略测试的失败,并继续执行其他测试或者运行程序的其他部分。
跳过测试失败可以使我们更快地进行开发,尤其是当测试成功率很低时。在这种情况下,我们可能无法修复所有的测试失败,但是我们需要继续开发和进行测试。通过跳过测试失败,我们可以忽略一些小问题,并确保我们可以在短时间内完成开发和测试。
在 Python 中,有多种方法可以跳过测试失败。这里我们介绍两种常用的方法。
在 unittest 框架中,我们可以使用装饰器 @unittest.skip(reason) 来跳过测试失败。例如:
import unittest
class MyTest(unittest.TestCase):
def test_something(self):
self.assertEqual(1 + 1, 3)
@unittest.skip("demonstrating skipping")
def test_skipped(self):
pass
@unittest.skipIf(mylib.__version__ < (1, 3),
"not supported in this library version")
def test_format(self):
self.assertEqual(mylib.format('foo'), 'foo')
@unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")
def test_windows_support(self):
# windows specific testing code
pass
在上述代码中,我们使用了 @unittest.skip(reason) 装饰器来跳过测试失败。例如,我们在 test_something 中测试了 1+1 是否等于 3,这个测试将会失败,但是我们在 test_skipped 中使用 skip 装饰器并在 reason 参数中说明了原因(demonstrating skipping),因此这个测试将被跳过不执行。
在 pytest 框架中,我们可以使用装饰器 @pytest.mark.skip(reason) 来跳过测试失败。例如:
import pytest
def test_something():
assert 1 + 1 == 3
@pytest.mark.skip(reason="demonstrating skipping")
def test_skipped():
pass
@pytest.mark.skipif(sys.version_info < (3, 5), reason="requires python3.5")
def test_version():
assert sys.version_info >= (3, 5)
@pytest.mark.skip(reason="I don't want to run this test right now.")
def test_skip():
pass
在上述代码中,我们使用了 @pytest.mark.skip(reason) 装饰器来跳过测试失败。例如,我们在 test_something 中测试了 1+1 是否等于 3,这个测试将会失败,但是我们在 test_skipped 中使用 skip 装饰器并在 reason 参数中说明了原因(demonstrating skipping),因此这个测试将被跳过不执行。
跳过测试失败是在 Python 开发中常见的观念之一。在测试成功率较低时,我们可以忽略某些测试失败,并继续进行开发和测试。在 unittest 和 pytest 框架中,我们可以使用 skip 装饰器来跳过测试失败。这个方法可以让我们更快地进行开发和测试。