最近在学习 pytest,需要获取每个测试函数的名字,在 unittest 里可以直接用 self._testMethodName 来方便的获取,pytest 有没有相似的方法啊
def case_id(func): @wraps(func) def id(*args, **kwargs): log.info('Test case ID: %s ,time %s' % (func.__name__, now)) return func(*args, **kwargs) return id
通过 Reporting hook 的 pytest_collectreport 方法来取
sys._getframe().f_code.co_name 或者 inspect 模块
fixture 函数可以传入 request 对象,通过 request._pyfuncitem.name 可以取到方法名,可以参考https://docs.pytest.org/en/latest/fixture.html#fixtures-can-introspect-the-requesting-test-context