Python:断言列表中的所有对象都具有特定的属性值

时间:2014-03-05 09:01:54

标签: python django

我正在使用django-1.6为一个网络应用程序工作,其中将有应用程序进入并经历各个阶段的审查。在满足标准时,他们会获得批准并晋升到下一阶段或被推迟。我正在测试审批过渡。如果可批准的应用程序的状态已更改为等待下一阶段,我需要断言。所以,这就是我现在这样做的方式:

self.assertEqual('stage2.pending', stage1_approved_mentor_applications[0].status)

我正在寻找的是像

self.assertEqual('stage2.pending', stage1_approved_mentor_applications.status)

这将确保列表stage1_approved_mentor_applications中的所有对象的状态为“stage2.pending”。一种方法是将它传递给一个获取列表的函数,并在所有状态为'stage2.pending'时返回True,否则返回False。该函数将在assertTrue中调用。想知道是否已经有一个解决方法,这将使我免于重新发明轮子。

任何人都可以帮助我吗?提前谢谢。

3 个答案:

答案 0 :(得分:4)

怎么样:

for s in stage1_approved_mentor_applications:
   self.assertEqual('stage2.pending', s.status)

让您知道哪种状态不同

答案 1 :(得分:2)

这个怎么样?

self.assertFalse(
    any(obj.status != 'stage2.pending' for obj in stage1_approved_mentor_applications)
)

答案 2 :(得分:0)

self.assertTrue( all([x is 'stage2.pending' for x in stage1_approved_mentor_applications] ))