python pytest-покрытие: проверить, действительно ли определения модулей вызываются в тестах - PullRequest
1 голос
/ 13 мая 2019

У меня есть проблема с некоторым кодом ctypes, который у меня есть, когда pytest-покрытие перекрывает мое «истинное» тестовое покрытие.

Вот как выглядит модуль (используя фиктивный пример):

# mymod.py
add = clib.add
add.arg_types = [c_int, c_int]
add.res_type = c_int

Проблема в том, что когда я запускаю pyest_coverage, мой охват кода показывает 100%, даже если python add никогда не вызывается в моих модульных тестах.Иначе говоря, если я НЕ выполню

#tests/test_mymod.py
assert mymod.add(1,2) == 3

, я хочу, чтобы мое освещение отражало это, то есть я хочу отразить, что add "на самом деле не проверялось".

ОПЦИИ

Мой модуль не может позволить себе потерять производительность.Одна вещь, о которой я подумал, это сделать либо:

def add(a, b):
    # probably really bad performance wise if called many times!!!
    _add = clib.add
    _add.arg_types = [c_int, c_int]
    _add.res_type = c_int
    return _add(a,b)

, либо

_add = clib.add
_add.arg_types = [c_int, c_int]
_add.res_type = c_int
def add(a, b):
    # questionable performance!!
    return _add(a,b)

Но я боюсь, что обе эти реорганизации для целей тестированияповлиять на производительность кода

Любые идеи, как я могу обмануть pytest или покрытие pytest, чтобы не считать add как охваченное, если только некоторая тестовая функция не вызовет add ??

...