C'est une chose basique, mais comme ça va un peu, je l'ai enregistré sous forme de mémorandum
Si vous avez besoin d'un fichier temporaire lors de l'écriture d'un test, tempfile Est recommandé.
tempfile.mkstemp ()
crée un fichier temporaire, mais vous devez supprimer le fichier vous-même.
J'ai pensé que je devrais faire ʻos.remove () ʻaprès l'opération de fichier, et à la suite de son écriture et de son exécution, le processus` PermissionError: [WinError 32] ne peut pas accéder au fichier. Un autre processus est en cours d'utilisation. : 'C: \ ... [Chemin du fichier temporaire]' 's'est produit.
Après avoir essayé diverses choses en pensant que la syntaxe with est manquante, il semble que le processus au moment de l'exécution contienne toujours le fichier, il est donc nécessaire de faire ʻos.close () `. fait.
Voici un exemple de test qui a bien fonctionné
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) # <--Ici.
os.remove(path)
Recommended Posts