【发布时间】:2019-11-15 10:05:43
【问题描述】:
我有一个 Django 测试用例,我正在 setUp 中创建一些对象:
OBJ_COUNT = 4
class ObjTest(TestCase):
def setUp(self):
for i in range(OBJ_COUNT):
Obj.objects.create()
运行此测试会产生 5 个,而不是 4 个对象。
【问题讨论】:
-
5不是由可能在其他地方打印的range(..)打印的。在您的模型、视图……中可能有一个print(..)语句来执行此操作。 -
当然,除非您在某处导入了名称为
range的内容,从而覆盖了对“原始”range(..)的引用。 -
请注意,您的输出缺少
4-5不是代码中print的结果。 -
@MisterMiyagi 如果 OBJ_COUNT 为 3,则输出 0 1 2 4。
-
@rkardashov
range是具有明确语义的内置函数。在显示的代码中,它的行为与描述的完全一样。
标签: python django python-3.x unit-testing