如何设置python文件的属性?

时间:2012-10-21 10:05:31

标签: 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
    test = test_generator(test)
    setattr(API_tests, test_name, test)

这将起作用。

我想将setattr()上的API_tests替换为文件作为对象而不是类,以便此文件将附加函数(test_generator X 4)我动态设置它们

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

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

由于

1 个答案:

答案 0 :(得分:0)

不是在模块命名空间中动态创建测试函数(我认为是你的意图),而是使用测试生成器的nosetest支持。

如果nose检测到一个生成器并且该生成器产生一个可调用的和任何可调用的args,它将迭代它并为你运行每个测试。

您的示例可以重写为

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

鉴于此,鼻子将进行4次测试