0

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

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 个测试通过”

这个问题可以在其他作品中:how to get the current file as an object

谢谢

4

1 回答 1

0

与其在模块命名空间中动态创建测试函数(我认为这是您的意图),不如使用测试生成器的鼻子测试支持。

如果鼻子检测到一个生成器并且该生成器产生一个可调用对象和可调用对象所需的任何参数,它将对其进行迭代并为您运行每个测试。

您的示例可以重写为

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 次测试

于 2012-10-21T10:22:15.417 回答