跳过没有装饰语法的单元测试

李·汉普顿

我有一套测试是使用TestLoader的(从unittest模块)loadTestsFromModule()方法加载的,即

suite = loader.loadTestsFromModule(module)

这给了我一个很好的测试列表。我的问题是,我正在使用的测试工具有时需要根据各种标准跳过某些测试。我想做的是这样的:

for test in suite:
    mark the test as 'to-skip' if it meets certain criteria

请注意,我不能仅仅从测试列表中删除测试,因为我希望单元测试测试运行者实际上跳过测试,将它们添加到跳过的计数中,以及所有这些爵士乐。

单元测试文档建议在测试方法或类周围使用修饰符由于我是从模块加载这些测试,并根据测试本身未包含的条件决定跳过这些测试,因此我不能真正使用装饰器。有没有一种方法可以遍历每个单独的测试,并且有一些方法可以将其标记为“跳过”测试而无需直接访问测试类或该类中的方法?

虚假的

使用unittest.TestCase.skipTest

import unittest

class TestFoo(unittest.TestCase):
    def setUp(self): print('setup')
    def tearDown(self): print('teardown')
    def test_spam(self): pass
    def test_egg(self): pass
    def test_ham(self): pass

if __name__ == '__main__':
    import sys
    loader = unittest.loader.defaultTestLoader
    runner = unittest.TextTestRunner(verbosity=2)
    suite = loader.loadTestsFromModule(sys.modules['__main__'])
    for ts in suite:
        for t in ts:
            if t.id().endswith('am'): # To skip `test_spam` and `test_ham`
                setattr(t, 'setUp', lambda: t.skipTest('criteria'))
    runner.run(suite)

版画

test_egg (__main__.TestFoo) ... setup
teardown
ok
test_ham (__main__.TestFoo) ... skipped 'criteria'
test_spam (__main__.TestFoo) ... skipped 'criteria'

----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK (skipped=2)


----------------------------------------------------------------------
Ran 3 tests in 0.002s

OK (skipped=2)

更新

更新了代码以修补setUp而不是测试方法。否则,将执行setUp/tearDown方法以跳过测试。

注意

unittest.TestCase.skipTest(跳过测试)是在Python 2.7,3.1中引入的因此,此方法仅适用于Python 2.7 +,3.1 +

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Python中使用装饰器跳过单元测试

来自分类Dev

使用装饰器和元类跳过所有单元测试,但跳过Python中的一项

来自分类Dev

通过使用装饰器和元类跳过所有单元测试,但跳过Python中的一个

来自分类Dev

没有测试的单元测试

来自分类Dev

Android单元测试没有更新

来自分类Dev

单元测试没有失败

来自分类Dev

有没有一种方法可以生成单元测试来测试我的语法

来自分类Dev

单元测试Typescript装饰器

来自分类Dev

Python单元测试:在Nose中,有没有一种方法可以从nase.run()中跳过测试用例?

来自分类Dev

Python:鼻子没有接受单元测试

来自分类Dev

Spring Aspect没有在单元测试中触发

来自分类Dev

运行单元测试时没有可用的资源

来自分类Dev

SonarQube没有获得单元测试覆盖率

来自分类Dev

没有模拟的单元测试包保护的类

来自分类Dev

没有HTTP Server的Jersey单元测试

来自分类Dev

启动单元测试后,GUI没有响应

来自分类Dev

VS 2013中没有“运行单元测试”选项

来自分类Dev

没有模拟的单元测试包保护的类

来自分类Dev

对没有返回类型的服务进行单元测试

来自分类Dev

没有 Symfony 的单元测试服务注释

来自分类Dev

函数没有给出预期的结果,单元测试失败

来自分类Dev

Android单元测试跳过测试类中的行

来自分类Dev

Flask 单击命令单元测试 - 如何使用带有“with_appcontext”装饰器的测试应用程序?

来自分类Dev

如何对装饰功能进行单元测试?

来自分类Dev

使用缓存装饰器在Python中运行单元测试

来自分类Dev

$ httpBackend装饰器后AngularJS单元测试失败

来自分类Dev

有没有办法防止单元测试和测试的类之间的耦合

来自分类Dev

Android 单元测试,说我的班级里没有测试,虽然我有 1

来自分类Dev

Jenkins和Xcode5单元测试目标-没有测试输出?

Related 相关文章

  1. 1

    在Python中使用装饰器跳过单元测试

  2. 2

    使用装饰器和元类跳过所有单元测试,但跳过Python中的一项

  3. 3

    通过使用装饰器和元类跳过所有单元测试,但跳过Python中的一个

  4. 4

    没有测试的单元测试

  5. 5

    Android单元测试没有更新

  6. 6

    单元测试没有失败

  7. 7

    有没有一种方法可以生成单元测试来测试我的语法

  8. 8

    单元测试Typescript装饰器

  9. 9

    Python单元测试:在Nose中,有没有一种方法可以从nase.run()中跳过测试用例?

  10. 10

    Python:鼻子没有接受单元测试

  11. 11

    Spring Aspect没有在单元测试中触发

  12. 12

    运行单元测试时没有可用的资源

  13. 13

    SonarQube没有获得单元测试覆盖率

  14. 14

    没有模拟的单元测试包保护的类

  15. 15

    没有HTTP Server的Jersey单元测试

  16. 16

    启动单元测试后,GUI没有响应

  17. 17

    VS 2013中没有“运行单元测试”选项

  18. 18

    没有模拟的单元测试包保护的类

  19. 19

    对没有返回类型的服务进行单元测试

  20. 20

    没有 Symfony 的单元测试服务注释

  21. 21

    函数没有给出预期的结果,单元测试失败

  22. 22

    Android单元测试跳过测试类中的行

  23. 23

    Flask 单击命令单元测试 - 如何使用带有“with_appcontext”装饰器的测试应用程序?

  24. 24

    如何对装饰功能进行单元测试?

  25. 25

    使用缓存装饰器在Python中运行单元测试

  26. 26

    $ httpBackend装饰器后AngularJS单元测试失败

  27. 27

    有没有办法防止单元测试和测试的类之间的耦合

  28. 28

    Android 单元测试,说我的班级里没有测试,虽然我有 1

  29. 29

    Jenkins和Xcode5单元测试目标-没有测试输出?

热门标签

归档