【发布时间】:2016-08-30 13:33:15
【问题描述】:
我正在编写具有数据库依赖性的单元测试(所以从技术上讲,它们是功能测试)。通常,这些测试不仅依赖于数据库的实时性和功能性,而且还依赖于某些可用的数据。
例如,在一项测试中,我可能会查询数据库以检索将用于测试更新或删除功能的示例数据。如果数据不存在,那么在这种情况下,这并不完全是失败。我只关心更新或删除的通过/失败状态,在这种情况下,我们甚至还没有走得足够远来测试它。所以我不想给出假阳性或假阴性。
是否有一种优雅的方式让单元测试返回第三种可能的结果?比如警告?
【问题讨论】:
-
Pytest 有 skip 和 xfail doc.pytest.org/en/latest/skipping.html
-
这是一个失败——您的测试未能按照您的测试所需的方式设置系统。说“数据不存在,所以这个测试失败也没关系”是说你并不真正关心你正在测试的功能是否有效。让您的测试在检索数据之前立即可靠地插入数据,这将使您更好地了解系统的状态。
-
如果它们是单元测试,你真的应该考虑模拟 SQL 层,以便你的测试只测试特定的代码段(没有像这样的依赖项)。拥有这些依赖项会减慢您的测试执行时间。
-
@Mark,你对嘲笑是正确的。但在这种特殊情况下,这些实际上是旨在命中数据库的功能测试。
标签: python unit-testing functional-testing