The fixed os.listdir patch does not work for unittesting

Hello everyone, so I have a class method that I'm trying to test, which requires two fixed methods: "ConfigB. Init " and "listdir":

from os import listdir
from config.ConfigB import ConfigB

class FileRunner(object):
  def runProcess(self, cfgA)
    cfgB = ConfigB(cfgA)
    print(listdir())

I have the following test installed:

import unittest
import unittest.mock imort MagicMock
import mock
from FileRunner import FileRunner

class TestFileRunner(unittest.TestCase):
  @mock.patch('ConfigB.ConfigB.__init__')
  @mock.patch('os.listdir')
  def test_methodscalled(self, osListDir, cfgB):

    cfgA = MagicMock()
    fileRunner = FileRunner()

    cfgB.return_value = None
    osListDir.return_value = None

    fileRunner.runProcess(cfgA)

Now the corrected mock and return value work for "ConfigB.ConfigB", but it does not work for "os.listdir". When the print (listdir ()) method is executed, I get a list of files in the current directory, and not the value "No", as I indicated in the corrected return value. Any idea what is going wrong?

+4
source share
1 answer

. patch('os.listdir') , :

@mock.patch("path.to.your.pythonfile.listdir")

.

+5

Source: https://habr.com/ru/post/1679366/


All Articles