2016-08-30 30 views
0

我正在编写具有数据库依赖性的单元测试(因此技术上他们是功能测试)。通常这些测试不仅依赖于数据库的实时性和功能性,还可以依赖于某些数据的可用性。除了通过或失败之外,Python单元测试还有其他结果吗?

例如,在一次测试中,我可能会查询数据库以检索将用于测试更新或删除功能的示例数据。如果数据尚不存在,那么在这种情况下这不完全是失败。我只关心更新或删除的通过/失败状态,在这种情况下,我们甚至没有足够的时间去测试它。所以我不想给出假阳性或假阴性。

有没有一种优雅的方式让单元测试返回第三种可能的结果?如警告?

+1

Pytest具有跳跃和xfail http://doc.pytest.org/en/latest/skipping。 html – allcaps

+1

虽然这是一个失败 - 您的测试无法以您的测试需要的方式设置系统。如果说“数据不存在,所以这个测试失败就没问题”是说你并不在乎你测试的功能是否工作。在取回数据之前,让您的测试可靠地插入数据,这将使您更好地了解系统的状态。 –

+0

如果他们是单元测试,你应该考虑嘲笑SQL层,这样你的测试只测试一段特定的代码(没有像这样的依赖)。具有这些依赖关系会减慢测试执行时间。 – Mark

回答

0

总的来说我认为Paul Becotte的建议是最适合大多数情况下:

这是一个失败的though-你的测试未能建立系统 ,需要测试的方式。说“数据不存在,所以它 是可行的,这个测试失败”是说你并不在乎 关于你正在测试的功能是否工作。让您的测试 在检索之前立即可靠地插入数据,这将使您更好地洞察系统的状态。

但是,在我的情况下,我正在编写一个功能测试,它依赖于从多个进程生成和操作的数据。在测试开始时快速生成它并不实际(至少现在)。

我终于找到了工作,因为我需要它来使用skipTest这里提到:

Skip unittest if some-condition in SetUpClass fails

相关问题