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

magu_

我在写一些东西unittest,发现一个相当奇怪的行为几乎把我烧死了。

以下测试:

import unittest

class Test(unittest.TestCase):
    @unittest.skip('Not ready yet')
    def test_A(self):
        self.assertTrue(False)

    @unittest.skip
    def test_B(self):
        self.assertTrue(False)

    def test_C(self):
        self.assertTrue(False)

if __name__ == '__main__':
    unittest.main()

结果是:

test_A (__main__.Test) ... skipped 'Not ready yet'
test_B (__main__.Test) ... ok
test_C (__main__.Test) ... FAIL

======================================================================
FAIL: test_C (__main__.Test)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./test.py", line 13, in test_C
    self.assertTrue(False)
AssertionError: False is not true

----------------------------------------------------------------------
Ran 3 tests in 0.000s

使用装饰器为unittest.skip空不会跳过测试,但随后将其报告为通过。因此,第二天很容易忘记此跳过的测试,并永远保持跳过状态。跳过但报告通过行为的原因是什么?

如果很重要:

  • Python:3.4.3 | Anaconda 2.3.0(64位)
  • 作业系统:RHEL 6.7
user2357112支持Monica
@decorator
def f(): ...

相当于

def f(): ...
f = decorator(f)

@decorator(...)
def f(): ...

相当于

def f(): ...
f = decorator(...)(f)

这意味着当您忘记跳过原因时,您将获得

def test_B(self): ...
test_B = unittest.skip(test_B)

通过测试方法作为跳过原因,并将返回的测试装饰器分配给test_Bunittest尝试运行时test_B,测试装饰器不会报告断言失败,因此unittest认为它是通过测试。

的不等价@decorator@decorator()是Python的设计疣之一,但没有太多我们可以做些什么。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

单元测试Typescript装饰器

来自分类Dev

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

来自分类Dev

Python单元测试,使用基本测试类时跳过测试

来自分类Dev

在 Python3 中使用单元测试进行单元测试

来自分类Dev

如何在Python中删除(tearDown)单例实例装饰器以进行单元测试?

来自分类Dev

如何使用SimpleInjector 3+对装饰器注册进行单元测试?

来自分类Dev

如何使用Jasmine(Angular JS)对自定义装饰器进行单元测试

来自分类Dev

如何对使用环境变量的装饰器进行单元测试?

来自分类Dev

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

来自分类Dev

Python多重处理无法在单元测试中使用

来自分类Dev

如何在Python中使用Mockito编写单元测试

来自分类Dev

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

来自分类Dev

在单元测试中使用哪种货币?

来自分类Dev

在Angular单元测试中使用Modernizr

来自分类Dev

在单元测试中使用AudioContext

来自分类Dev

在单元测试中使用Pyodbc

来自分类Dev

在Boost单元测试中使用管道

来自分类Dev

跳过了Python预提交的单元测试

来自分类Dev

从命令行跳过指定的Python单元测试

来自分类Dev

在Python3中使用单元测试和正常进行测试之间的区别

来自分类Dev

在单元测试中使用passThrough进行角度测试

来自分类Dev

使用Python的BigQuery单元测试

来自分类Dev

使用Jasmine单元测试测试Jquery选择器

来自分类Dev

如何在SimpleInjector 2.6.1+中对开放的通用装饰器链进行单元测试

来自分类Dev

如何用Jest单元测试覆盖TypeORM @Column装饰器?

来自分类Dev

单元测试:如何获取已传递给补丁装饰器的值?

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

    单元测试Typescript装饰器

  5. 5

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

  6. 6

    Python单元测试,使用基本测试类时跳过测试

  7. 7

    在 Python3 中使用单元测试进行单元测试

  8. 8

    如何在Python中删除(tearDown)单例实例装饰器以进行单元测试?

  9. 9

    如何使用SimpleInjector 3+对装饰器注册进行单元测试?

  10. 10

    如何使用Jasmine(Angular JS)对自定义装饰器进行单元测试

  11. 11

    如何对使用环境变量的装饰器进行单元测试?

  12. 12

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

  13. 13

    Python多重处理无法在单元测试中使用

  14. 14

    如何在Python中使用Mockito编写单元测试

  15. 15

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

  16. 16

    在单元测试中使用哪种货币?

  17. 17

    在Angular单元测试中使用Modernizr

  18. 18

    在单元测试中使用AudioContext

  19. 19

    在单元测试中使用Pyodbc

  20. 20

    在Boost单元测试中使用管道

  21. 21

    跳过了Python预提交的单元测试

  22. 22

    从命令行跳过指定的Python单元测试

  23. 23

    在Python3中使用单元测试和正常进行测试之间的区别

  24. 24

    在单元测试中使用passThrough进行角度测试

  25. 25

    使用Python的BigQuery单元测试

  26. 26

    使用Jasmine单元测试测试Jquery选择器

  27. 27

    如何在SimpleInjector 2.6.1+中对开放的通用装饰器链进行单元测试

  28. 28

    如何用Jest单元测试覆盖TypeORM @Column装饰器?

  29. 29

    单元测试:如何获取已传递给补丁装饰器的值?

热门标签

归档