Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyunit测试失败,因为传入5个参数时,方法仅接受4个参数_Python_Unit Testing_Testing_Tdd_Python Unittest - Fatal编程技术网

Python pyunit测试失败,因为传入5个参数时,方法仅接受4个参数

Python pyunit测试失败,因为传入5个参数时,方法仅接受4个参数,python,unit-testing,testing,tdd,python-unittest,Python,Unit Testing,Testing,Tdd,Python Unittest,以下是我正在测试的函数的定义: def runCMD(cmd,subString=-1,stripSlashes=True,getReturnCode=False): 这是我的测试课 import unittest from class_backups import * class tests_backups(unittest.TestCase): def test_runCMD(self): cLInstance = class_backups()

以下是我正在测试的函数的定义:

def runCMD(cmd,subString=-1,stripSlashes=True,getReturnCode=False):
这是我的测试课

import unittest
from class_backups import *

class tests_backups(unittest.TestCase):

    def test_runCMD(self):
        cLInstance = class_backups()
        assert(cLInstance.runCMD("ls",-1,True,True)==0)

# When this module is executed from the command-line, run all its tests
unittest.main()
这是我的错误:

E
======================================================================
ERROR: test_runCMD (__main__.tests_backups)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "tests_backups.py", line 11, in test_runCMD
    assert(cLInstance.runCMD("ls",-1,True,True)==0)
TypeError: runCMD() takes at most 4 arguments (5 given)
----------------------------------------------------------------------
Ran 1 tests in 0.000s

FAILED (errors=1)

我做错了什么?有没有隐含的第五个论点?是赛尔夫吗

我认为
runCMD
方法缺少
self
作为第一个参数


由于它是一个绑定实例方法,Python隐式地将实例作为第一个参数发送,这就是您看到5个参数被传递的原因。

@Snow\u Mac No,这是一个面向对象的东西;-)尽管其他语言将其作为隐式参数,而Python始终将其作为显式参数(尽管它是隐式传递的)。当您有n个实例并调用实例方法时,它们都引用共享空间中的单个静态用户定义方法对象,但每次调用它都会将其绑定到不同的实例。实例方法在闭包中需要显式实例,类方法需要类对象,静态方法可以在任何上下文中运行。Python与其他语言一样,隐式地将对象绑定到可调用对象,但要求将其作为显式参数显示了对可调用对象的底层语法支持,最重要的是,它提供了一些可读性奖励。