0

我正在尝试测试这样的功能:

    def whatever():
        return select(t for t in Team
                  for p in t.Players
                  if p.Age > 18)

测试:

@patch('path.to.my.function.Team', return_value=TeamFactory.create())
def test_whatever(self, mock_team):
    players = whatever()

但我收到此错误: TypeError: Cannot iterate over non-entity object

关于如何创建假实体并测试功能的任何想法?

4

1 回答 1

1

为了克服错误,Team应该Players不是类,而是某个Mockup类的实例,带有__iter__返回空迭代器的方法。simples 实现如下所示:

class Mockup(object):
    def __iter__(self):
        return iter([])

Team = Mockup()
Person = Mockup()

然后您需要提供select返回所需结果的函数的模型实现

在 PonyORM 本身中,实体类喜欢TeamPerson有一个为类EntityMeta定义__iter__方法的元类。

于 2018-06-15T12:51:13.247 回答