написание функции pytest для проверки вывода в файл в python?

Я спросил этой вопрос о том, как написать pytest для проверки выхода в stdout и есть решение. Теперь мне нужно написать test case, чтобы проверить, записано ли содержимое в файл и что содержимое записано так, как ожидалось например:

def writetoafile():
   file = open("output.txt",w)
   file.write("hellon")
   file.write("worldn")
   file.close()

теперь функция pytest, чтобы проверить, написано ли это:

def test_writeToFile():
    file = open("ouput.txt",'r')
    expected = "hellonworldn"
    assert expected==file.read()

хотя это, кажется, работает, я не думаю, что это идеальный вариант, особенно жестко. как такиеtest functions писать в файл обычно написано?

1 ответов


есть приспособление tmpdir который создаст вам временный каталог для каждого теста. Таким образом, тест будет выглядеть примерно так:

def writetoafile(fname):
    with open(fname, 'w') as fp:
        fp.write('Hello\n')

def test_writetofile(tmpdir):
    file = tmpdir.join('output.txt')
    writetoafile(file.strpath)  # or use str(file)
    assert file.read() == 'Hello\n'

здесь вы рефакторинг кода, чтобы не быть жестко либо, что является ярким примером того, как тестирование вашего кода делает вам дизайн лучше.