Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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
PythonLinter说,修补的unittest中缺少方法调用中的值,但测试运行正常。为什么?_Python_Unit Testing_Stdout - Fatal编程技术网

PythonLinter说,修补的unittest中缺少方法调用中的值,但测试运行正常。为什么?

PythonLinter说,修补的unittest中缺少方法调用中的值,但测试运行正常。为什么?,python,unit-testing,stdout,Python,Unit Testing,Stdout,最近我一直在修补测试,我从来没有测试过类/函数是否成功打印,所以我决定尝试一下。现在,测试正在正确运行,我甚至有几个版本的测试,但是下面这个特定的实现有一个由我正在使用的linter引起的错误,即使代码在运行。它说: “方法callpylint中的参数‘mock_stdout’没有值(参数没有值)” 但是,当我在没有错误的情况下运行测试时,会找到并运行该值 有人能解释为什么会这样吗?这是门楣上的错误吗?有没有办法优化我的代码,这样错误就不会出现 class StringOperation2(对象

最近我一直在修补测试,我从来没有测试过类/函数是否成功打印,所以我决定尝试一下。现在,测试正在正确运行,我甚至有几个版本的测试,但是下面这个特定的实现有一个由我正在使用的linter引起的错误,即使代码在运行。它说:

“方法callpylint中的参数‘mock_stdout’没有值(参数没有值)”

但是,当我在没有错误的情况下运行测试时,会找到并运行该值

有人能解释为什么会这样吗?这是门楣上的错误吗?有没有办法优化我的代码,这样错误就不会出现

class StringOperation2(对象):
定义初始化(自):
self.s=“”
def getstring(self):
self.s=输入(“在此处插入值”)
def打印字符串(自身):
打印(self.s.lower(),end='')
@修补程序('builtins.input',lambda*args:'testing')
@补丁('sys.stdout',new_callable=io.StringIO)
def断言标准输出(自身、预期输出、模拟标准输出):
xobj=stringoperationtwo()
xobj.getstring()
xobj.printstring()
self.assertEqual(mock\u stdout.getvalue(),预期的\u输出)
def测试_打印字符串二(自):
self.assert\u stdout(“测试”)

这是pylint中的一个缺陷/限制。(见和。)

我不想全局禁用pylint中的E1120,因为我仍然希望在其他情况下出现错误,也不想为每个调用站点添加
#pylint:disable=no value作为参数

相反,我通过将假定缺少的参数设置为可选参数,然后检查它们是否在运行时提供:

@patch('builtins.input',lambda*args:'testing')
@补丁('sys.stdout',new_callable=io.StringIO)
def assert_stdout(自身、预期_输出、模拟_stdout=None):
断言模拟对象
# ...

检查显示
self.assertEqual
的行。这就是错误产生的原因。@zixuan过梁说“test_printstringtwo”和assertEqual的参数没有值。正如我所提到的,代码正在运行和工作,因此这不是assertEqualYou在方法定义中缺少所需的第四个参数
mock\u input
:-“如果patch()用作装饰器,并且省略了new,则创建的mock将作为额外参数传递给装饰函数。”@ipaleka我已经模拟了输入。这是内置的补丁。输入linter是否会抱怨添加了该参数?