【问题标题】:TypeError: __init__() takes at most 2 arguments (4 given)TypeError: __init__() 最多接受 2 个参数(给定 4 个)
【发布时间】:2016-02-03 05:17:27
【问题描述】:

我在尝试运行 django 测试时收到错误消息 这是我的模型文件代码

   class MountPoint(models.Model):
       name = models.CharField(max_length=100)
       backend = models.CharField(max_length=200,default=DEFAULT_BACKEND)
       path = models.CharField(max_length=300)

       def __unicode__(self):
           return self.name

这是我测试的课程

  class MountPoint(TestCase):
      def create_mountpoint(self):
          name = "test"
          backend = "test"
          path = user_root
          return MountPoint(name, backend, path)

      def test_mountpoint_creation(self):
          m = self.create_mountpoint()
          self.assertTrue(isinstance(m, MountPoint))
          self.assertEqual(m.__unicode(), m.name)

我得到的错误信息如下。它说我有比预期更多的投入。

Traceback(最近一次调用最后一次): 文件“/Users/xihui/Documents/WebProgramming/django/ece264site/filesystem/tests.py”,第 18 行,在 test_mountpoint_creation m = self.create_mountpoint() 文件“/Users/xihui/Documents/WebProgramming/django/ece264site/filesystem/tests.py”,第 15 行,在 create_mountpoint 返回 MountPoint(名称、后端、路径) TypeError: init() 最多接受 2 个参数(给定 4 个)


在 0.009 秒内运行 1 次测试

失败(错误=1)

【问题讨论】:

  • 测试类的名称会隐藏模型类的名称,因此当您尝试实例化模型实例时,它实际上会尝试创建测试类的新实例,这显然需要不同的参数.将您的测试类重命名为 TestMountPoint
  • 顺便提一下,DEFAULT_BACKEND = 'filesystem.backend.HDWrapper.DirectionHDWrapper,filesystem.backend.HDWrapper.DocumentHDWrapper'

标签: python django testing


【解决方案1】:

我认为你必须使用关键字 args:

return MountPoint(name=name, backend=backend, path=path)

【讨论】:

    猜你喜欢
    • 2013-01-13
    • 2021-11-22
    • 2018-12-23
    • 1970-01-01
    • 2019-12-07
    • 2017-06-30
    • 2019-01-20
    相关资源
    最近更新 更多