Я новичок в тестировании pytest и пытаюсь протестировать модуль python main.py, который включает в себя классы и функции, а также читает статический файл config.json. Когда я импортирую основной модуль для моего pytest и запускаю тест, я получаю сообщение об ошибке, что файл json не может быть найден. Я хочу снова запустить простой тест для классов, которые я определил в main.py, и мне не нужны данные config.json.
Я пытался разместить свой pytest в разных частях каталога проекта, но это не помогает. Я также попытался создать пакет из моей программы, включая ссылку на файл config.json в файле MANIFEST.in, и мой файл config.json был установлен вместе с моим пакетом, но у меня все равно возникла та же проблема, что и у файла конфигурации невозможно найти.
Мой каталог
Project
src
code
main.py
config.json
tests
test_main.py
мой pytest test_main.py:
import sys, os
myPath = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, myPath + '/../')
import pytest
from main import Reservation
@pytest.mark.runme
def test_reservation():
starttime = "2019-05-03 12:30"
booktime = "2019-05-02 8:00"
newreservation = Reservation("002", "manicure", "normal", starttime, booktime, 1, 30)
assert newreservation.get_serv_name() == "manicure"
из main.py в строке 436:
with open('config.json', 'rt') as fin:
config = json.load(fin)
business_name = config['business_name']
Я ожидаю, что смогу импортировать класс Reservation из main.py и запустить его тестирование, но получаю сообщение об ошибке: файл config.json не найден:
Ошибка Pytest:
==================================== ERRORS ====================================
___________ ERROR collecting src/MiYE/tests/test_u01_load_clients.py ___________
test_main.py:6: in <module>
from main import Reservation
../main.py:436: in <module>
with open('config.json', 'rt') as fin:
E FileNotFoundError: [Errno 2] No such file or directory: 'config.json'
=============================== warnings summary ===============================
Кстати, я могу получить доступ к файлу config.json, когда я запускаю main.py как обычный файл python (не импортированный модуль). Кроме того, проблема сохраняется, когда тест перемещается из / test в каталог кода.