Платформа тестирования VSCode дает сбой при ссылке на файл в третичной папке.Python

Программы на Python
Ответить
Anonymous
 Платформа тестирования VSCode дает сбой при ссылке на файл в третичной папке.

Сообщение Anonymous »

У меня есть очень простая среда тестирования в VSCode:

Код: Выделить всё

/.vscode
launch.json
settings.json
/python
/resources
data.csv
/src
myapp.py
/test
test_config.py
test_myapp.py
/venv

Код: Выделить всё

setting.json
имеет:

Код: Выделить всё

    "python.testing.unittestEnabled": false,
"python.testing.pytestEnabled": true,
"python.testing.pytestArgs": [
"."
],
(Следующее не работает даже при включенном unittestEnabled: true)

Код: Выделить всё

launch.json
включает в себя:

Код: Выделить всё

            "cwd": "${workspaceFolder}/python",
"env": {
"PYTHONPATH": "${cwd}"
}

Код: Выделить всё

myapp.py
 – это один простой класс/функция для тестирования:

Код: Выделить всё

import pandas as pd
import sys
sys.path.insert(0, '../src')

class MyApp():
def __init__(self):
self.constant = 42

def get_constant(self):
# pd.read_csv('../resources/some_data.tsv', sep='\t')  ## TODO: please get this working!
return self.constant

Код: Выделить всё

test_myapp.py
использует стандартную среду unittest для тестирования этого класса:

Код: Выделить всё

import unittest
import sys
sys.path.insert(0, '../src')
from myapp import MyApp

class Test_MyApp(unittest.TestCase):
def test_main_program_loads(self):
app = MyApp()
print(app.get_constant)
self.assertEqual(app.get_constant(), 42)

if __name__ == '__main__':
unittest.main()
В оба этих файла я добавил sys.path.insert(0, '../src'), чтобы код/тест можно было запускать индивидуально, используя ' кнопку воспроизведения в строке вкладок заголовка VSCode.
После этого ответа https://stackoverflow.com/a/75565473/2523501 я добавил test_config.py, который получил тест проходит визуально на боковой панели «Тестирование» (без него они ломаются):

Код: Выделить всё

from pathlib import Path
import os
import sys

main_folder = Path(__file__).parent.parent
sys.path.insert(0, str(main_folder))
sys.path.insert(0, str(main_folder / 'src'))
sys.path.insert(0, str(main_folder / 'test'))
sys.path.insert(0, str(main_folder / 'resources'))
os.chdir(main_folder)
__init__.py не требуется.
Однако! Как только я попробую использовать data.csv (т. е. раскомментируйте строку 10). Платформа пользовательского интерфейса тестирования показывает неудачные тесты, несмотря на то, что кнопка «Воспроизвести» как на myapp.py, так и на test_myapp.py все еще работает.
Ошибка заканчивается на:

Код: Выделить всё

FileNotFoundError: [Errno 2] No such file or directory: '../resources/some_data.tsv'


Подробнее здесь: https://stackoverflow.com/questions/792 ... ary-folder
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»