Python单元测试_使用装饰器实现测试跳过和预期故障的方法

网友投稿 258 2023-05-05


Python单元测试_使用装饰器实现测试跳过和预期故障的方法

python单元测试unittest中提供了一下四种装饰器实现测试跳过和预期故障。(使用Python 2.7.13)

请查考Python手册中:

https://docs.python.org/dev/library/unittest.html

The following decorators implement test skipping and expected failures:

#以下装饰器实施测试跳过和预期故障:

@unittest.skip(原因)

Unconditionally skip the decorated test. reason should describe why the test is being skipped.

#无条件跳过装饰测试。 原因应该说明为什么要跳过测试。

@unittest.skipIf(条件,原因)

Skip the decorated test if condition is true.

#如果条件为真,跳过装饰测试。

@unittdCkGnVgsToest.skipUnless(条件,原因)

Skip the decorated test unless condition is true.

# 跳过装饰的测试,除非条件是真的。

@unittest.expectedFailure

Mark the test as an expected failure. If the test fails when run, the test is not counted as a failure.

#将测试标记为预期的失败。 如果测试在运行时失败,则测试不会被视为失败。

(以上采用谷歌翻译,可能会有差异)

好了,写段代码看下,test.py ,使用的Eclipse

#coding:UTF-8

import unittest

from test.test_pprint import uni

class Test_ce(unittest.TestCase):

a=16

b=10

@unittest.skip('无条件跳过')

def test_ce1(self):

self.assertEqual((self.a-self.b), 16)

#判断是否相等

@unittest.skipIf(True==1, '条件为真则跳过')

def test_ce_2(self):

self.assertFalse(self.a==self.b)

#判断是否为False

@unittest.skipUnless(1==1, '条件为假则跳过')

def test_ce_3(self):

self.assertTrue(self.a>16)

#判断是否为True

@unittest.expectedFailure

def test_ce_4(self):

self.assertFalse(self.a==16)

@unittest.expectedFailure

def test_ce_5(self):

self.assertFalse(self.a==15)

if __name__ == '__main__':

unittest.main()

好的,运行一下

ssFxu

======================================================================

FAIL: test_ce_3 (__main__.Test_ce)

----------------------------------------------------------------------

Traceback (most recent call last):

File "D:\Escplise\workspace\Pytest\src\test001\CE.py", line 20, in test_ce_3

self.assertTrue(self.a>16)

AssertionError: False is not true

----------------------------------------------------------------------

Ran 5 tests in 0.000s

FAILED (failures=1, skipped=2, expected failures=1, unexpected successes=1)

好的,我们对第1行代码进行分析:

s:全称是skipped(跳过)

s:条件为真,所以也是skipped(跳过)

F:条件为真,所以忽略装饰器,执行断言代码,显然是failures(失败)

x:断言结果显然是失败的,但是这是在我们意料之中,所以是expected failures(预期的失败)

u:断言结果显然是pass,但是我们预计可能不通过,所以是unexpected successes(意想不到的成功)

即第13行代码 所示  FAILED (failures=1, skipped=2, expected failures=1, unexpected successes=1)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Maven配置文件pom.xml详解
下一篇:微信小程序后台解密用户数据实例详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~