为 sys.exit 创建单元测试

3

我有一个简单的Python函数。

def test():
    print "test"
    sys.exit(1)

我正在使用Python 2.6,如何为此函数创建单元测试?这是因为在Python 2.7之后,sys.exit可以在单元测试用例中处理。

有人能告诉我如何为这个简单的代码创建单元测试吗?


问题出在哪里?在2.6和2.7中,sys.exit应该引发SystemExit异常。然后单元测试只需要检查它是否引发了适当的异常... - skyking
不行,在Python 2.6中测试过了。 - sam
你使用的是哪个版本的Python? - skyking
我正在使用Python 2.6。 - sam
1个回答

5
根据我所看到的,在2.x版本中,sys.exit几乎没有改变。唯一的区别在于早期的sys.exit不会检查它的参数,而是无论如何都会引发SystemExit异常(现在只有在提供正确的参数时才会引发异常)。
例如,我尝试使用Python 2.6(也称为2.6.0)进行以下操作:
import sys
try:
   sys.exit(1)
except SystemExit(1) as e:
   print repr(e)

它回应了SystemExit(1,)

因此,您的测试应该是这样的:

def test():
    passed = False
    try:
        sys.exit(1)
    except SystemExit as e:
        if e.code == 1:
            passed = True

    assert passed

有没有类似于assertTrue、AssertFalse的东西可以用于SystemExit? - sam
那个问题有点不太清楚,请您详细说明一下? - skyking
我们可以这样做吗?self.assertFalse(test()) - sam
不像我的示例中写的那样,test函数没有返回值,但是它可以被修改以适应。关键点在于,为了使测试通过,你需要使用sys.exit来引发正确code的异常 - 即达到passed = True语句。 - skyking

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接