我仍然是Django的新手,对以下内容感到非常困惑:
我的测试有一个辅助函数,它创建一个模型“Product”的实例,设置一些属性并将实例保存到db:
def createTestProduct(product_group="VG", opno="MyProduct"+str(Product.objects.count())):
p = Product()
p.product_group = product_group
p.own_product_no = opno
p.save()
return p
当我从TestCase调用此函数时,默认参数“opno”无法在db中获得正确数量的产品:
class ProductListPageTest(TestCase):
def test_product_list_displays_products(self):
createTestProduct()
print("# of Products: " + str(Product.objects.count()))
print(Product.objects.all())
createTestProduct()
print("# of Products: " + str(Product.objects.count()))
print(Product.objects.all())
...
结果输出是(产品模型的__str__
方法输出own_product_no
属性):
# of Products: 1
[<Product: MyProduct0>]
# of Products: 2
[<Product: MyProduct0>, <Product: MyProduct0>]
我的目的是让产品编号:MyProduct0,Myproduct1 ...... 任何人都可以指出我的错误吗? 非常感谢提前! Fildc
答案 0 :(得分:2)
函数参数在定义时评估一次,因此您不应该使用def
语句中的任何计算。这种情况的解决方法是:
def createTestProduct(product_group="VG", opno=None):
if opno is None:
opno = "MyProduct%s" % Product.objects.count()
...