Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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
在Visual Studio代码中调试python单元测试_Python_Unit Testing_Visual Studio Code - Fatal编程技术网

在Visual Studio代码中调试python单元测试

在Visual Studio代码中调试python单元测试,python,unit-testing,visual-studio-code,Python,Unit Testing,Visual Studio Code,如果我尝试在单元测试中使用常规调试器,就会出现奇怪的行为 我能够在VS代码中用python运行单元测试,如下所述: 以下是我的测试代码: from unittest.mock import patch import unittest def greet(name): print('Hello ', name) class TestPrint(unittest.TestCase): def test_print_simple(self): print(&qu

如果我尝试在单元测试中使用常规调试器,就会出现奇怪的行为

我能够在VS代码中用python运行单元测试,如下所述:

以下是我的测试代码:

from unittest.mock import patch
import unittest

def greet(name):
    print('Hello ', name)

class TestPrint(unittest.TestCase):

    def test_print_simple(self):
        print("hello")

    @patch('builtins.print')
    def test_greet(self, mock_print):
        print("uh oh")
        # The actual test
        greet('John')
        mock_print.assert_called_with('Hello ', 'John')
        greet('Eric')
        mock_print.assert_called_with('Hello ', 'Eric')
        # Showing what is in mock
        import sys
        sys.stdout.write(str( mock_print.call_args ) + '\n')
        sys.stdout.write(str( mock_print.call_args_list ) + '\n')
    
if __name__ == '__main__':
    unittest.main()
如果我通过测试资源管理器(侧边栏中的图标看起来像一个小烧瓶)运行它,那么所有测试都会通过。如果我通过调试Python:Current文件来运行它,并且一次一行地遍历程序,执行将从

mock_print.assert_called_with('Hello ', 'John')

然后测试失败,我得到“AssertionError:未找到预期调用”


我可以通过测试资源管理器运行测试,这很好,但常规调试器的行为如此奇怪,这让我担心。VS代码调试器不是简单地用于单元测试吗?

我调试了您在VS代码中提供的代码,结果表明它可以成功调试。因此,建议您检查调试的相关配置:。此外,由于VS代码中python的调试功能是由“python”扩展提供的,因此可以尝试重新安装此扩展。
print("hello")