У меня есть проект, который в качестве фактической структуры:
Project
|-setup.py
|
|-Code
| |-exemple.py
|
|-Test
|-testExemple.py
Я хочу, чтобы моя установка была автоматизирована, чтобы установить файлы и каталоги путей, какими бы они ни были. Итак, в моем Setup.py у меня есть 30 импортов, но затем у меня есть входные данные:
testFolderNameSetup = input("Enter the name of the folder containing your tests:")
testFolderNameSetup = "./" + str(testFolderNameSetup)
testFolderPathNameSetup = (os.path.abspath(os.path.join(os.path.dirname(__file__), testFolderNameSetup)))
if os.path.exists(testFolderPathNameSetup):
sys.path.insert(0, testFolderPathNameSetup)
Дело в том, что когда я импортирую настройки в свой testExample.py, как это
from setup import *
и я запускаю юнит-тесты, получаю это сообщение об ошибке
Testing started at 9:02 AM ...
C:\Users\marc-\AppData\Local\Continuum\anaconda3\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2018.1.2\helpers\pycharm\_jb_pytest_runner.py" --target testExemple.py::TestExample.testAdd
Launching py.test with arguments testExemple.py::TestExample::testAdd in C:\Users\marc-\Documents\GitHub\BasicProjectArchitecture\test
============================= test session starts =============================
platform win32 -- Python 3.6.3, pytest-3.2.1, py-1.4.34, pluggy-0.4.0
rootdir: C:\Users\marc-\Documents\GitHub\BasicProjectArchitecture, inifile:Enter the name of the folder containing your code:
test/testExemple.py:None (test/testExemple.py)
testExemple.py:2: in <module>
from setup import *
..\setup.py:21: in <module>
codeFolderNameSetup = get_input("Enter the name of the folder containing your code:")
..\setup.py:14: in get_input
return input(text)
..\..\..\..\AppData\Local\Continuum\anaconda3\lib\site-packages\_pytest\capture.py:459: in read
raise IOError("reading from stdin while output is captured")
E OSError: reading from stdin while output is captured
=================================== ERRORS ====================================
____________________ ERROR collecting test/testExemple.py _____________________
testExemple.py:2: in <module>
from setup import *
..\setup.py:21: in <module>
codeFolderNameSetup = get_input("Enter the name of the folder containing your code:")
..\setup.py:14: in get_input
return input(text)
..\..\..\..\AppData\Local\Continuum\anaconda3\lib\site-packages\_pytest\capture.py:459: in read
raise IOError("reading from stdin while output is captured")
E OSError: reading from stdin while output is captured
------------------------------- Captured stdout -------------------------------
Enter the name of the folder containing your code:
=========================== 1 error in 0.22 seconds ===========================
ERROR: not found: C:\Users\marc-\Documents\GitHub\BasicProjectArchitecture\test\testExemple.py::TestExample::testAdd
(no name 'C:\\Users\\marc-\\Documents\\GitHub\\BasicProjectArchitecture\\test\\testExemple.py::TestExample::testAdd' in any of [<Module 'test/testExemple.py'>])
Process finished with exit code 0
Да, ошибка get_input только потому, что я попытался заменить ввод функцией, возвращающей ввод с именем get_input, но он все равно не работает. Я слышал о ложных входных данных, но я не думаю, что мне следует это делать, я не пытаюсь проверить входные данные, я просто хочу импортировать файл, который использует входные данные в своем сценарии ...
Если у кого-то есть идеи, как решить эту проблему, пожалуйста, помогите!
Спасибо!
-------------------- РЕДАКТИРОВАТЬ # 1 -----------------
Кажется, что когда я импортирую setup.py, он запускает его! Я попытался импортировать в базовую функцию, и он запускает установочный код ... Возможно, поэтому устройство не работает. Я постараюсь решить это и вернусь с ответом.