Как сделать файлы тестовых данных доступными для тестов pytest при запуске с tox? - PullRequest
0 голосов
/ 15 ноября 2018

Я хочу запустить test для функции, которая принимает Path к файлу в качестве ввода через аргумент: function(some_path_to_file) через tox. Файл, который я хочу передать функции, не может быть временно создан во время настройки теста (что я обычно делаю через pytest s встроенный tmpdir fixtures ), но находится в каталоге пакета <package>/data помимо теста каталог <package>/tests (местоположение <package>/tests/data, вероятно, будет лучше). Поскольку tox выполняет тесты в virtualenv, мне не ясно, как сделать файл тестовых данных доступным для теста. Я знаю, что могу определить базовый временный каталог pytest с помощью опции --basedir , но я пока не работал с tox.

ТЛ; др

Проблема заключалась в преобразовании some_path_to_file из Path в str (чтобы передать его в sqlite3.connect(database внутри function) с использованием Path.resolve( , Не нужно настраивать параметр pytests --basedir и tox любым способом.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Это меня тоже сбило с толку.Я смог решить эту проблему: указать полный путь текстового файла. Я хотел, чтобы функция тестирования читала относительно в базовом каталоге.

Такнапример, мое дерево каталогов выглядит так:

.
├── __init__.py
├── my_package
│   ├── __init__.py
│   └── calculate_stats.py
├── my_package.egg-info
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   ├── dependency_links.txt
│   ├── requires.txt
│   └── top_level.txt
├── bin
│   └── calculate_stats
├── requirements
│   ├── default.txt
│   └── development.txt
├── setup.py
├── test
│   ├── __init__.py
│   ├── test_calculate_stats.csv
│   ├── test_calculate_stats.txt
│   └── test_calculate_stats.py
└── tox.ini

В файле test_calculate_stats.py у меня есть следующая строка:

assert (calculate_stats.calculate_stats_to_csv("test/test_calculate_stats.txt", "test/test_calculate_stats.csv") == 60)

Функция calculate_stats_to_csv читает в test/test_calculate_stats.txt file, вычисляет некоторые статистические данные и выводит их в test/test_calculate_stats.csv

Изначально я только что указал входной файл test_calculate_stats.txt, потому что он находится в том же каталоге, что и файл, содержащий функцию тестирования - вот тогдаЯ столкнулся с ошибкой.

0 голосов
/ 15 ноября 2018

tox предопределяет количество замен . Каталог virtualenv - {envdir}, site-packages - {envsitepackagesdir}. Передайте значение из командной строки в ваш тестовый скрипт следующим образом:

[testenv]
    commands = pytest --basedir={envsitepackagesdir}/mypackage
...