Я попытался проверить свой код с помощью unittest, где переменная хранится где-то в файле и доступна с помощью os.getenv
settings.py
import os
TARGET_VAR = os.getenv('TARGET_VAR_VALUE')
некоторый apiclass
from settings import TARGET_VAR
class someApi:
def __init__(self):
print(TARGET_VAR) // good if running normally
....rest of func
test
def test_extreme_devices(self):
app = Flask(__name__)
app.config["LOGIN_DISABLED"] = True
api = flask_restful.Api(app)
api.add_resource('someApi', '/devices/')
with app.test_client() as client:
res = client.get('/devices/')
self.assertEqual(res.status_code, 200)
.env
TARGET_VAR_VALUE='some target value'
Это работает хорошо, но не при запуске test Я запутался при запуске test для тестирования класса someApi, я получил ошибка
TypeError: int() argument must be a string, a bytes-like object or a number, not
'NoneType'
, очевидно, для TARGET_VAR равна NoneType, даже если ее значение установлено в .env
Это будет работать, если я добавлю фактическое значение непосредственно к нему
TARGET_VAR = 'actual value'
Эта проблема возникает только на юнит-тесте, но не когда flask работает и получает доступ к маршруту (как почтальон)