Python: Как сделать временные файлы в моем наборе тестов?

(Я использую Python 2.6 и nose .)

Я пишу тесты для своего приложения Python. Я хочу, чтобы один тест открыл новый файл, закроет его и удалит. Естественно, я предпочитаю, чтобы это происходило во временном каталоге, потому что я не хочу уничтожать файловую систему пользователя. И это должно быть кросс-OS.

Как мне это сделать?

  • Python Unittest: открыть и подождать, пока программа не будет закрыта.
  • Mocking urllib2.urlopen (). Read () для разных ответов
  • Проверяет ли pytest тестовую работу с помощью тестов на основе класса unittest?
  • Импортировать произвольно-названный файл в виде Python-модуля без создания файла байт-кода
  • Тестирование клиента API Python
  • __init__ для unittest.TestCase
  • Как сделать тестирование производительности на основе производительности (эталоном) в Python
  • Тестирование зависимостей с помощью Python
  • 3 Solutions collect form web for “Python: Как сделать временные файлы в моем наборе тестов?”

    См. Модуль tempfile в стандартной библиотеке – должно быть все, что вам нужно.

    FWIW, используя py.test, вы можете написать:

     def test_function(tmpdir): # tmpdir is a unique-per-test-function invocation temporary directory 

    Каждая тестовая функция, использующая аргумент функции «tmpdir», получит чистый пустой каталог, созданный как вспомогательный каталог «/ tmp / pytest-NUM» (linux, win32 имеет другой путь), где NUM увеличивается для каждого тестового прогона. Последние три каталога хранятся для облегчения проверки, а старые автоматически удаляются. Вы также можете установить базовую папку temp с py.test --basetemp=mytmpdir .

    Объект tmpdir – это объект py.path.local, который также может использоваться следующим образом:

     sub = tmpdir.mkdir("sub") sub.join("testfile.txt").write("content") 

    Но также хорошо просто преобразовать его в «строковый» путь:

     tmpdir = str(tmpdir) 

    Вместо непосредственного использования tempfile я предлагаю использовать для него оболочку диспетчера контекста – менеджер контекста позаботится об удалении каталога во всех случаях (успех / отказ / исключение), в основном без шаблона.

    Вот как это можно использовать:

     from tempdir import TempDir ... # in some test: with TempDir() as d: temp_file_name = os.path.join(d.name, 'your_temp_file.name') # create file... # ... # asserts... 

    Я использую домашнюю версию (реализация довольно короткая – до 20 строк) до такой степени, когда мне нужно было использовать ее где-то еще, поэтому я огляделся, если есть готовый к установке пакет, и действительно есть: tempdir

    Interesting Posts

    Сериализованный список для JSON

    Преобразование ConfigParser.items ('') в словарь

    вызов php-функции из python

    что делает on_delete на моделях Django?

    Как я могу остановить запуск python.exe сразу после получения результата?

    Python – вычисление линий тренда с ошибками

    Счетчик возвратов Django при сохранении даты <= последние 24 часа

    У меня есть «Код авторизации» для моего приложения. Но как я могу использовать его для публикации в блогере с помощью gdata-python-client?

    Python Module с тире или дефис (-) в его имени

    Uncaught ReferenceError: django не определен

    СУХОЙ способ добавления созданных / модифицированных и временных

    Различное поведение между re.finditer и re.findall

    Должен ли я изучать / использовать MapReduce или какой-либо другой тип распараллеливания для этой задачи?

    Как добавить пустой столбец в dataframe?

    Конфигурационный файл Python: любая рекомендация формата файла? Формат INI по-прежнему подходит? Кажется довольно старой школой

    Python - лучший язык программирования в мире.