Es ist eine grundlegende Sache, aber da es ein wenig passt, habe ich es als Memorandum aufgenommen
Wenn Sie beim Schreiben eines Tests eine temporäre Datei benötigen, tempfile ) Ist empfohlen.
tempfile.mkstemp ()
erstellt eine temporäre Datei, aber Sie müssen die Datei selbst löschen.
Ich dachte, ich sollte nach dem Dateivorgang "os.remove ()" ausführen, und als Ergebnis des Schreibens und Ausführens kann der Prozess "PermissionError: [WinError 32]" nicht auf die Datei zugreifen. Ein anderer Prozess wird verwendet. : 'C: \ ... [Temporärer Dateipfad] `' ist aufgetreten.
Als Ergebnis des Versuchs verschiedener Dinge, während man denkt, dass die With-Syntax fehlt, scheint es, dass der Prozess zum Zeitpunkt von "tempfile.mkstemp ()" immer noch die Datei erfasst, so dass es notwendig ist, "os.close ()" auszuführen. tat.
Unten finden Sie ein Beispiel für einen Test, der gut funktioniert hat
class MyFileController():
def __init__(self, path):
self.path = path
def output(self, data):
with open(self.path, "a", newline='', encoding='utf_8_sig', errors='ignore') as f:
f.write(data)
class TestMyFileController(unittest.TestCase):
def test_output(self):
fd, path = tempfile.mkstemp()
mcc = MyFileController(path)
try:
mcc.output("test")
with open(path, encoding='utf_8_sig') as f:
test_data = f.read()
self.assertEqual(headers, "test")
finally:
os.close(fd) # <--Hier.
os.remove(path)
Recommended Posts