如何将属性设置为python文件?

如何将属性设置为python文件?,python,nosetests,setattr,Python,Nosetests,Setattr,我知道如何设置类的属性,但找不到如何设置文件的属性 flow = ['1','4','5','2'] def test_generator(test): def test_parser(self): print test return test_parser class API_tests(unittest.TestCase): pass for test in flow: test_name = 'test_%s' % test

我知道如何设置类的属性,但找不到如何设置文件的属性

flow = ['1','4','5','2']

def test_generator(test):
    def test_parser(self):
        print test
    return test_parser

class API_tests(unittest.TestCase):
        pass


for test in flow:
    test_name = 'test_%s' % test
    test = test_generator(test)
    setattr(API_tests, test_name, test)
这个,会有用的

我想将setattr()上的API_测试替换为作为对象的文件,而不是类,这样该文件将附加我动态设置的函数(test_generator X 4)

当我在命令行上运行'nosetests-v'时,我的预期结果是它将显示'4个测试通过'

这个问题可以在其他工作中解决:如何将当前文件作为对象获取


感谢您,不要在模块名称空间中动态创建测试函数(我认为这是您的意图),而是对测试生成器使用nosetest支持

如果nose检测到一个生成器,并且该生成器生成一个可调用的和可调用所需的任何参数,它将迭代该生成器并为您运行每个测试

你的例子可以改写为

def check_flow_value(val):
    # assert something about val
    assert True

def test_flows():
    flow = ['1','4','5','2']
    for val in flow:
        yield check_flow_value, val

鉴于此,nose将运行4个测试

当前文件的名称位于
\uuuuu file\uuuu
中。然而,这是一个字符串。您是否打算创建X个(本例中为4个)可以运行的测试?如果是这样,请查看测试生成器的测试支持。简而言之,编写一个生成器,生成一个可调用函数和可调用函数所需的参数。nose将为您运行所有这些功能。在这里,您可以找到如何在当前模块中设置属性(我认为这是您实际要求的):。响应将类似于:API_tests.test_generator.test_flows('1',)。。。ok API_测试。测试_生成器。测试_流('4',)。。。ok API_测试。测试_生成器。测试_流('5',)。。。ok API_测试。测试_生成器。测试_流('2',)。。。好的,我的问题是,1,2,4,5实际上会被hugh dict的参数所取代。我只想提供输出我将生成的测试名称,它将只显示名称,而不是参数。。可能吗?如果您担心的是输出,那么您可以动态包装您的测试函数,这样unittest或NoTest看到的测试将是一个非常简单的函数,没有参数。例如,使用partial:
new\u test\u method=partial(创建\u generic\u test,arg\u name=arg)