使用decorators提供unittest d时的准确测试计数

2024-05-15 12:02:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用一个函数修饰符通过数据提供程序函数将数据提供给python单元测试。我的解决方案与this guy does非常相似。每件事都很好,只有一个小问题,但很烦人的例外是:

在phpUnit中,当使用数据提供程序时,所提供的每个数据集的测试计数都会增加。当我添加一个数据集并且测试通过时,我可以很容易地看到新的数据集已经运行,因为我的测试计数增加了。在python中,使用decorator,测试计数保持不变。到目前为止,我一直在做的是确保在测试从get go通过时运行数据集,这是故意引入错误,以看到测试失败。这不是世界末日,但我想在这里寻求帮助已经够烦人的了。你知道吗

有没有办法增加通过decorator提供的每个数据集的测试计数?你知道吗


Tags: 数据函数程序gogetdecorator单元测试解决方案
1条回答
网友
1楼 · 发布于 2024-05-15 12:02:49

下面的代码片段显示了如何在decorator中使用计数器。 我希望你能把它转换成你的代码。你知道吗

def log(func):
    def inner(*args, **kwargs):
        print('{} {} {} {}'.format(str(inner.count), str(func), args, kwargs))
        inner.count += 1
        return func(args, kwargs)
    inner.count = 1
    return inner


@log
def foo(*args, **kwargs):
    print('{}{}'.format(args, kwargs))


def main():
    foo(1, 2, 3, 4)
    foo('a')
    foo('asdf', 'asdf')


if __name__ == '__main__':
    main()

此示例将打印:

1 <function foo at 0x2711848> (1, 2, 3, 4) {}
((1, 2, 3, 4), {}){}
2 <function foo at 0x2711848> ('a',) {}
(('a',), {}){}
3 <function foo at 0x2711848> ('asdf', 'asdf') {}
(('asdf', 'asdf'), {}){}

这是增加通过decorator提供的每个数据集的测试计数的一种方法。你知道吗

相关问题 更多 >