仅从“测试”开始记录成员函数

2024-06-25 22:49:30 发布

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

如何记录我的测试,仅记录我的测试?

我用Sphinx记录我的单元测试

我的设置如下:

class MyTestWrapper1(unittest.Testcase)
    def test_general_setup()

class MyTestWrapper2(MyTestWrapper1)
    def test_general_tear_down()

class TheUsedTest1(MyTestWrapper2)
    def test_specific_test()

正如我们所看到的,父级是Unittest.TestCase,所有都是由usedtest1派生的

现在我将记录类TheUsedTest1

我希望在HTML输出中显示所有以test_开头的成员函数

为了存档,我使用了选项:inherited-members:,它实际上显示了所有test_*成员。但它也显示unittest中的所有其他成员函数

.. automodule:: TheUsedTes1
   :members:
   :inherited-members:

我尝试将以下代码片段添加到conf.py中。它应该跳过特殊部分

def maybe_skip_member(app, what, name: str, obj, skip, options):

    print(name, file=sys.stderr, end='')
    if name.startswith('test_'):
        print(".. OK", file=sys.stderr)
        return False
    else:
        print(".. nope", file=sys.stderr)
        return True

def setup(app):
    app.connect('autodoc-skip-member', maybe_skip_member)

但它并没有像预期的那样起作用。如果每个被迭代的对象不是以test_开头,那么它将被杀死。然而,如果迭代在TheUsedTest1上运行,它将被终止,并且任何成员函数都不受尊重。因此,它永远不会到达应该记录的成员


Tags: 函数nametestappdefsys记录成员
1条回答
网友
1楼 · 发布于 2024-06-25 22:49:30

我尚未对此进行测试,但您可以尝试检查要跳过的对象的类型:

def maybe_skip_member(app, what, name: str, obj, skip, options):
    import inspect
    if inspect.isclass(obj) or name.startswith('test_'):
        return False
    return True

编辑:更改为仅检查类-否则所有dunder方法和更多属性也将列出

相关问题 更多 >