【发布时间】:2017-06-18 22:47:10
【问题描述】:
我目前正在使用nose 执行一些测试,当使用带有nose+xunit 输出的生成器时,您需要设置当前函数的__name__ 属性以正确控制xunit 输出中的测试名称(参见@987654321 @例如)。
因为我不想每次都像这样硬编码函数的名称:
def my_function():
for foo in bar:
fn = lambda: some_generated_test(foo)
fn.description = foo.get('name')
my_function.__name__ = foo.get('name')
yield fn
如何以编程方式引用函数并设置__name__?
我曾尝试使用sys._getframe(),它会产生有关当前函数(名称等)的各种属性,我尝试将其用于setattr(*something*, "__name__", some_test_name),但这不起作用,因为我似乎无法弄清楚哪个部分的sys._getframe() 引用了该函数。
【问题讨论】:
-
为什么不只是
def some_test_name():? -
在函数之外做那个,或者写一个装饰器来做那个。
-
我也认为检查模块可以帮助您获取函数的名称。
-
@user2357112 函数包含生成器,但是nose+xunit 使用函数名称作为测试名称,当您希望使用生成的测试名称时这是不准确的。
-
设置
function.__name__有什么问题?你想如何引用函数?不太清楚你想在这里做什么。
标签: python python-2.7 function