我在使用某些ctypes代码时遇到问题,其中pytest-coverage夸大了我的“真实”测试范围。
这是该模块的外观(使用一个虚拟示例):
TaskSetManager.TASK_SIZE_TO_WARN_KIB
问题是,当我运行# mymod.py
add = clib.add
add.arg_types = [c_int, c_int]
add.res_type = c_int
时,即使从未在单元测试中调用 python pyest_coverage
,我的代码覆盖率也显示为100%。换句话说,如果我不这样做
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-coverage不将add
算作覆盖?