Django:有没有一个assertNumQueries方法可以将断言作为子测试运行



我想运行一个代码块,并确保生成的查询数量得到检查,但是,如果检查失败,我希望测试代码继续进行。

伪代码:

def assertNumQueriesSubTest(func, expected_number):
with self.countNumQueries as query_count:
func()
with self.subTest('query check'):
self.assertEqual(queries_count, expected_number)

对于经典的assertNumQueries,如果查询计数与预期值不匹配,则测试代码将停止。但是,这会使我无法正确调试测试,因为查询计数更改的原因可能并不明显,所以我想知道至少行为匹配是否仍然相同。

我为OpenWISP编写了一个解决方案,它执行子测试中的断言,这里有文档:OpenWISP_utils.tests.AssertNumQueriesSubTestMixin.