Der Erstellungspfad des Ordners kann nicht mit unittestem Patch behauptenPython

Python-Programme
Guest
 Der Erstellungspfad des Ordners kann nicht mit unittestem Patch behaupten

Post by Guest »

Ich versuche, alle Pfade zu behaupten, die os.makedirs gingen, um zu testen, dass ein strukturierter Ordner erstellt wurde. Der Code ist nicht kompliziert und ich bin sicher, dass er findet, aber meine Testberichte, dass die Methode mit den Pfaden nicht aufgerufen wurde, die ich überprüfe, indem ich Anrufe in Assert_any_call (my_path, 511) überprüfe. In diesem Fall seltsam, ist das Ausführen von Assert_Called_once als Hack, um die Ausgabe zu sehen, dass die Methode tatsächlich mit den erwarteten Pfaden aufgerufen wurde. Was läuft in diesem Fall schief? Ich möchte diesen Teil meines Codes nicht ungetestet lassen, da ein anderer Entwickler daran arbeiten könnte, und könnte in die Falle der Doppelüberprüfung fallen und seine Zeit verschwenden.
< EM> Code

Code: Select all

def generate_base_folders():
if not os.path.exists(Path.cwd() / "unity_project"):
raise FolderCreationException("unity_project folder doesn't exist in the project")

for category in ["characters", "environments", "ui", "cinematics"]:
for tag in ["concept", "model", "animation", "vfx", "sfx", "vo", "music"]:
os.makedirs(Path.cwd() / "sessions" / category / "common" / tag)
os.makedirs(Path.cwd() / "unity_project" / "Assets" / category / "common" / tag)
Test

Code: Select all

    @patch("os.makedirs")
def test_base_folders(self, mkdirs_mock):
assertions = []
for category in ["characters", "environments", "ui", "cinematics"]:
for tag in ["concept", "model", "animation", "vfx", "sfx", "vo", "music"]:
assertions.append(Path.cwd() / "sessions" / category / "common" / tag)
assertions.append(
Path.cwd() / "unity_project" / "Assets" / category / "common" / tag
)
sessions.generate_base_folders()
for a in assertions:
mkdirs_mock.assert_any_call(a, 511)
ASSERT_ANY_CALL TraceBack

Code: Select all

Fss.
======================================================================
FAIL: test_base_folders (sessions.tests.sessions_tests.TestSessionsSetup.test_base_folders)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Users\juank\AppData\Local\Programs\Python\Python313\Lib\unittest\mock.py", line 1424, in patched
return func(*newargs, **newkeywargs)
File "C:\Users\juank\dev\projects\python\gamedev_eco\sessions\tests\sessions_tests.py", line 40, in test_base_folders
mkdirs_mock.assert_any_call(a, 511)
~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File "C:\Users\juank\AppData\Local\Programs\Python\Python313\Lib\unittest\mock.py", line 1048, in assert_any_call
raise AssertionError(
'%s call not found' % expected_string
) from cause
AssertionError: makedirs(WindowsPath('C:/Users/juank/gamedev_eco/sessions/characters/common/concept'), 511) call not found

----------------------------------------------------------------------
Ran 4 tests in 0.018s

FAILED (failures=1, skipped=2)
ASSERT_CALLED_ONCE TraceBack

Code: Select all

Fss.
======================================================================
FAIL: test_base_folders (sessions.tests.sessions_tests.TestSessionsSetup.test_base_folders)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Users\juank\AppData\Local\Programs\Python\Python313\Lib\unittest\mock.py", line 1424, in patched
return func(*newargs, **newkeywargs)
File "C:\Users\juank\dev\projects\python\gamedev_eco\sessions\tests\sessions_tests.py", line 40, in test_base_folders
mkdirs_mock.assert_called_once()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "C:\Users\juank\AppData\Local\Programs\Python\Python313\Lib\unittest\mock.py", line 956, in assert_called_once
raise AssertionError(msg)
AssertionError: Expected 'makedirs' to have been called once. Called 56 times.
Calls: [call(WindowsPath('C:/Users/juank/gamedev_eco/sessions/characters/common/concept')),
(truncated the list for brevity)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post