如何在python中有条件地跳过测试

时间:2016-04-02 19:10:52

标签: python unit-testing pytest nose nose2

我想在满足条件时跳过一些测试函数,例如:

@skip_unless(condition)
def test_method(self):
    ...

如果condition评估为true,我希望将测试方法报告为跳过。我能用鼻子做一些努力,但我想看看是否有可能在鼻子2。

Related question描述了在nose2中跳过所有测试的方法。

3 个答案:

答案 0 :(得分:4)

通用解决方案:

您可以使用unittest跳过条件,这些条件适用于nosetests,nose2和pytest。有两种选择:

class TestTheTest(unittest.TestCase):
    @unittest.skipIf(condition, reason)
    def test_that_runs_when_condition_false(self):
        assert 1 == 1

    @unittest.skipUnless(condition, reason)
    def test_that_runs_when_condition_true(self):
        assert 1 == 1

Pytest

使用pytest框架:

@pytest.mark.skipif(condition, reason)
def test_that_runs_when_condition_false():
    assert 1 == 1

答案 1 :(得分:3)

内置unittest.skipUnless()方法,它应该与鼻子一起使用:

答案 2 :(得分:0)

使用鼻子:

resource "azurerm_virtual_machine" "openlr_webapp_vm" {
  ...
  os_profile_linux_config {
    disable_password_authentication = true
  }
}
  

nosetests -v --nocapture 1.py

#1.py
from nose import SkipTest

class worker:
    def __init__(self):
        self.skip_condition = False

class TestBench:
    @classmethod
    def setUpClass(cls):
        cls.core = worker()
    def setup(self):
        print "setup", self.core.skip_condition
    def test_1(self):
        self.core.skip_condition = True
        assert True
    def test_2(self):
        if self.core.skip_condition:
            raise SkipTest("Skipping this test")