繁体   English   中英

如何在 Python 中运行标记为“@unittest.skip”的测试用例?

[英]How to run test case marked `@unittest.skip` in Python?

假设以下测试套件:

# test_module.py
import unittest

class Tests(unittest.TestCase):

  @unittest.skip
  def test_1(self):
    print("This should run only if explicitly asked to but not by default")

  # assume many other test cases and methods with or without the skip marker

当通过python -m unittest调用 unittest 库时,是否有任何参数可以传递给它实际运行而不是跳过Tests.test_1而不修改测试代码并运行任何其他跳过的测试?

python -m unittest test_module.Tests.test_1正确地选择它作为唯一要运行的测试,但它仍然跳过它。

如果不修改测试代码就没有办法做到这一点,我可以做的最惯用的更改是有条件地撤消@unittest.skip并运行一个特定的测试用例测试用例吗?

在所有情况下,我仍然希望python -m unittest discover (或任何其他未显式打开测试的调用)跳过测试。

如果你想跳过一些昂贵的测试,你可以使用条件跳过和自定义环境变量

@skipIf(int(os.getenv('TEST_LEVEL', 0)) < 1)
def expensive_test(self):
    ...

然后你可以通过指定相应的环境变量来包含这个测试:

TEST_LEVEL=1 python -m unittest discover
TEST_LEVEL=1 python -m unittest test_module.Tests.test_1

如果你想跳过一个测试,因为你预计它会失败,你可以使用专用的expectedFailure装饰器。

顺便说一下, pytest有一个专门的装饰器来标记慢测试

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM