Я пытаюсь заставить тестовый контейнер python работать с зефиром для запуска теста, но я не могу заставить его работать. Я всегда получаю соединение отказано при запуске теста. Я создал движок sqlalchemy и протестировал его, и он отлично работает, но при передаче строки соединения testcontainer в виде конфигурации с маршмеллоу он просто не работает. Ниже мой базовый тестовый класс.
class BaseTestCase(TestCase):
base_url = '/api/v1'
def create_app(self):
config = MySqlContainer('mysql:8.0.19')
with config as mysql:
print(mysql.get_connection_url())
e = sqlalchemy.create_engine(mysql.get_connection_url())
result = e.execute("select version()")
for row in result:
print("Printing::::::::::::::::::::::" + str(row))
result.close()
logging.getLogger('connexion.operation').setLevel('ERROR')
connex_app = connexion.App(__name__, specification_dir='../../api/')
connex_app.app.json_encoder = JSONEncoder
connex_app.add_api('static/openapi.yaml')
app = connex_app.app
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = mysql.get_connection_url()
app.config['LOG_LEVEL'] = 'DEBUG'
bcrypt.init_app(app)
db.init_app(app)
ma.init_app(app)
print("Finished setting up")
return app
Я могу заставить это работать, когда я использую sqlite в качестве строки подключения.
class BaseTestCase(TestCase):
base_url = '/api/v1'
def create_app(self):
class Config:
PORT = 5000
SQLALCHEMY_TRACK_MODIFICATIONS = False
FLASK_ENV = 'local'
SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:'
LOG_LEVEL = 'DEBUG'
logging.getLogger('connexion.operation').setLevel('ERROR')
connex_app = connexion.App(__name__, specification_dir='../../api/')
connex_app.app.json_encoder = JSONEncoder
connex_app.add_api('static/openapi.yaml')
app = connex_app.app
app.config.from_object(Config)
bcrypt.init_app(app)
db.init_app(app)
ma.init_app(app)
print("Finished setting up test")
return app
Любая помощь будет высоко ценится.
Пол