7

python的单元测试库(尤其是3.x,我不太关心2.x)是否有只能由root用户访问的装饰器?

我有这个测试功能。

def test_blabla_as_root():
    self.assertEqual(blabla(), 1)

blabla 函数只能由 root 执行。我只想要 root 用户装饰器,所以普通用户会跳过这个测试:

@support.root_only
def test_blabla_as_root():
    self.assertEqual(blabla(), 1)

这样的装饰器存在吗?我们有 @support.cpython_only 装饰器。

4

1 回答 1

6

unittest.skipIf如果您使用的是 unittest,您可以使用and跳过测试或整个测试用例unittest.skipUnless

在这里,你可以这样做:

import os

@unittest.skipUnless(os.getuid() == 0)  # Root has an uid of 0
def test_bla_as_root(self):
    ...

可以简化为(可读性较差):

@unittest.skipIf(os.getuid())
于 2013-08-07T08:19:08.123 回答