J'utilise pytest et je veux tester qu'une fonction écrit du contenu dans un fichier. J'ai donc writer.py
qui comprend:En utilisant pytest pour m'assurer qu'un fichier est créé et écrit en
MY_DIR = '/my/path/'
def my_function():
with open('{}myfile.txt'.format(MY_DIR), 'w+') as file:
file.write('Hello')
file.close()
Je veux tester /my/path/myfile.txt
est créé et a le contenu correct:
import writer
class TestFile(object):
def setup_method(self, tmpdir):
self.orig_my_dir = writer.MY_DIR
writer.MY_DIR = tmpdir
def teardown_method(self):
writer.MY_DIR = self.orig_my_dir
def test_my_function(self):
writer.my_function()
# Test the file is created and contains 'Hello'
Mais je suis coincé avec la façon de le faire. Tout ce que j'essaie, comme quelque chose comme:
import os
assert os.path.isfile('{}myfile.txt'.format(writer.MYDIR))
qui me génère des erreurs conduisent à penser que je ne suis pas comprendre ou à utiliser tmpdir correctement.
Comment dois-je tester cela? (Si le reste de la façon dont j'utilise pytest est aussi horrible, n'hésitez pas à me le dire aussi!)
Il y a deux questions qui traitent chaque partie de ce que vous éprouvez des difficultés, je crois. Vérifiez-les et voyez si elles fournissent un aperçu. En voici une en test pour écrire dans le fichier [ici] (https://stackoverflow.com/questions/20531072/writing-a-pytest-function-to-check-outputting-to-a-file-in-python) et [ici] (https://stackoverflow.com/questions/15801662/py-test-how-to-use-a-context-manager-in-a-funcarg-fixture) est celui qui montre comment utiliser le bon montage pour faire face à des gestionnaires de contexte. – idjaw
Vous devriez [simulez 'open()'] (https://stackoverflow.com/questions/1289894/how-do-i-mock-an-open-used-in-a-with-statement-using-the- mock-framework-in-pyth) donc vous n'ouvrez jamais un fichier, mais vérifiez simplement s'il a été correctement utilisé. –
Pouvons-nous voir plus de détails? Comment générez-vous tmpdir? Quelles sont les erreurs? – phd