Документирование функций-членов, начинающихся исключительно с "test_" - PullRequest
1 голос
/ 14 июля 2020

Как я могу документировать свои тесты, только мои тесты?

Я документирую свой модульный тест с помощью 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, и все происходит от TheUsedTes1.

Теперь я собираюсь задокументировать класс TheUsedTest1.

Я хотел бы иметь все функции-члены, начиная с test_, показанные в выходных данных HTML.

Для архивации я использовал параметр :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, она уничтожается, и любая функция-член не соблюдается. Таким образом, он никогда не доходит до членов, которые должны быть задокументированы.

1 Ответ

0 голосов
/ 14 июля 2020

Я не тестировал это, но вы можете попробовать проверить тип объекта, который нужно пропустить:

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

EDIT: изменил это, чтобы проверять только классы - в противном случае все методы dunder и многое другое также перечислены атрибуты.

...