我有一个Python模块,它定义了一个类并实例化了该类的许多实例。我想写一个测试,证明正确的数字已被实例化。
bar = Foo('abc')
baz = Foo('def')
...
quz = Foo('xyz')
然后在测试中我尝试过这样的事情:
assert num = len([ x for x in dir(foo) if isinstance(x, foo.Foo)])
不起作用,因为dir(foo)
似乎给出了一个字符串列表。
有没有办法在模块中找到特定类的实例?
答案 0 :(得分:2)
你真的很亲密。使用双等号进行比较,您需要使用getattr()按名称检索模块成员:
assert num == len([getattr(foo, x)
for x in dir(foo)
if isinstance(getattr(foo, x), foo.Foo)])
也可以阅读dir()
上的documentation。