You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目测试报错:Inspection()收到意外关键字参数partNum

解决Inspection() got an unexpected keyword argument partNum报错

嘿,这个问题我之前踩过一模一样的坑,咱们快速定位解决:

核心原因

你在测试用例的setUp方法里,尝试用partNum作为关键字参数创建Inspection对象,但你的Inspection模型类根本没定义这个字段,Django的ORM自然会报错说收到了意外的参数。你提供的代码里没贴models.py,这大概率就是问题的根源。

修复步骤

1. 完善Inspection模型的字段定义

打开你的models.py,确保Inspection类包含所有你用到的字段:

from django.db import models

class Inspection(models.Model):
    workOrderNum = models.CharField(max_length=20)
    partNum = models.CharField(max_length=20)  # 就是这个字段你漏了!
    customerName = models.CharField(max_length=100)
    qtyInspected = models.IntegerField()
    qtyRejected = models.IntegerField()

    def __str__(self):
        return self.workOrderNum

2. 执行数据库迁移

修改模型后必须同步数据库,不然新字段不会生效:

python manage.py makemigrations
python manage.py migrate

3. (可选)优化测试用例的pk引用

另外提醒一下:如果之前有遗留的测试数据,你创建的第一个Inspection对象pk不一定是1,稳妥的写法可以改成保存对象后直接用它的pk:

def setUp(self):
    self.inspection = Inspection.objects.create(
        workOrderNum='312456',
        partNum='SD33345100-AQ1',
        customerName='TERRA Inc.',
        qtyInspected=10,
        qtyRejected=2
    )

def test_inspection_defects_view_success_status_code(self):
    url = reverse('inspection_defects', kwargs={'pk': self.inspection.pk})
    response = self.client.get(url)
    self.assertEquals(response.status_code, 200)

排查小技巧

如果不确定模型有哪些字段,可通过Django Shell快速验证:

python manage.py shell

然后执行:

from finalreports.models import Inspection
print([field.name for field in Inspection._meta.get_fields()])

这样就能列出Inspection模型的所有字段,确认是否包含partNum。

内容的提问来源于stack exchange,提问作者Alfred Tsang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 22:02:51