Как импортировать модуль py, который читает данные из файла json? - PullRequest
0 голосов
/ 02 мая 2019

Я новичок в тестировании 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 в каталог кода.

...