为了账号安全,请及时绑定邮箱和手机立即绑定

Django REST 单元测试 TypeError: __init__() 需要 1 个位置参数

Django REST 单元测试 TypeError: __init__() 需要 1 个位置参数

隔江千里 2021-06-13 09:26:44
我正在使用命令启动以下代码$ python manage.py test,它返回错误:TypeError: __init__() takes 1 positional argument but 2 were given据我所知,我只是传递self给__init__ method,这个额外的 arg 来自哪里?我在这里检查了多个答案并查看了django 文档,但似乎找不到我的错误。这是什么原因造成的?代码:import requestsimport jsonfrom django.contrib.auth.models import Userfrom django.test import TestCasefrom django.test import Clientclass BasicFunctionality(TestCase):    def __init__(self):        user_name = 'boris_the_blade'        password = 'boris_the_sneaky_russian'        self.client = Client()        self.login_status = self.createUserAndLogin(user_name, password)    def createUserAndLogin(self, user_name, password):        self.user = User.objects.create_user(username=user_name, password=password)        login = self.client.login(username=user_name, password=password)        return login    def test_login(self):        self.assertTrue(self.login_status)全终端输出:Traceback (most recent call last):File "manage.py", line 15, in <module>    execute_from_command_line(sys.argv)File "/home/tompreston/.python_virtualenvs/lagoon-back-end-K1-2r-Ad/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line    utility.execute()File "/home/tompreston/.python_virtualenvs/lagoon-back-end-K1-2r-Ad/lib/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute    self.fetch_command(subcommand).run_from_argv(self.argv)File "/home/tompreston/.python_virtualenvs/lagoon-back-end-K1-2r-Ad/lib/python3.6/site-packages/django/core/management/commands/test.py", line 26, in run_from_argv    super().run_from_argv(argv)File "/home/tompreston/.python_virtualenvs/lagoon-back-end-K1-2r-Ad/lib/python3.6/site-packages/django/core/management/base.py", line 316, in run_from_argv    self.execute(*args, **cmd_options)
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

不要覆盖在数据库中设置测试数据的__init__方法TestCase。使用setUp来代替。


def setUp(self):

    user_name = 'boris_the_blade'

    password = 'boris_the_sneaky_russian'

    self.client = Client()  # Django's TestCase already sets self.client so this line isn't required

    self.login_status = self.createUserAndLogin(user_name, password)


查看完整回答
反对 回复 2021-06-16
  • 1 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信