Я пытаюсь написать модульные тесты для функций, выполняющих запросы Sql Alchemy. Я использую Automap для автоматического создания моделей. Поскольку у меня есть доступ к представлениям, а не к таблицам, я явно указал только первичный ключ моей модели. Ниже приведен мой код.
sql_alchemy_models.py
class Model1(Base):
__tablename__ = 'table_cust_data'
CustID = Column(Integer, primary_key=True)
main.py
from some_path.sql_alchemy_models import Model1
def get_info(session, cust_id):
cust_id = session.execute(select(Model1.CustID).filter(Model1.CustID == cust_id)).scalar()
return cust_id
test_main.py
from mock_alchemy.mocking import UnifiedAlchemyMagicMock
from main import get_info
@pytest.fixture
def session():
return UnifiedAlchemyMagicMock()
def test_info(session, mocker):
mocker.patch('some_path.main.Model1')
session.execute.return_value.scalar.return_value = 1
result = get_info(session, 1)
assert result == 1
Когда я запускаю приведенный выше тест, я получаю эту ошибку: sqlalchemy.exc.ArgumentError: ожидаемое выражение столбца, предложение FROM или другой элемент предложения столбцов получили .
Может кто-нибудь поделиться, как устранить эту ошибку?
Тест проходит, когда я заменяю 1 на None:
def test_info(session):
session.execute.return_value.scalar.return_value = None
result = get_info(session, 1)
assert result is None
Не знаю, почему это происходит.
Я сделал это следующим образом:
def test_get_cust_id(session, mocker):
mock = mocker.MagicMock()
session.execute.return_value = mock
mock.scalar.return_value = 2
cust_id = get_cust_id(session)
assert cust_id == 2
Подробнее здесь: https://stackoverflow.com/questions/792 ... my-automap
Python – Модульные тесты – Sql Alchemy – Automap ⇐ Python
Программы на Python
-
Anonymous
1733248768
Anonymous
Я пытаюсь написать модульные тесты для функций, выполняющих запросы Sql Alchemy. Я использую Automap для автоматического создания моделей. Поскольку у меня есть доступ к представлениям, а не к таблицам, я явно указал только первичный ключ моей модели. Ниже приведен мой код.
sql_alchemy_models.py
class Model1(Base):
__tablename__ = 'table_cust_data'
CustID = Column(Integer, primary_key=True)
main.py
from some_path.sql_alchemy_models import Model1
def get_info(session, cust_id):
cust_id = session.execute(select(Model1.CustID).filter(Model1.CustID == cust_id)).scalar()
return cust_id
test_main.py
from mock_alchemy.mocking import UnifiedAlchemyMagicMock
from main import get_info
@pytest.fixture
def session():
return UnifiedAlchemyMagicMock()
def test_info(session, mocker):
mocker.patch('some_path.main.Model1')
session.execute.return_value.scalar.return_value = 1
result = get_info(session, 1)
assert result == 1
Когда я запускаю приведенный выше тест, я получаю эту ошибку: sqlalchemy.exc.ArgumentError: ожидаемое выражение столбца, предложение FROM или другой элемент предложения столбцов получили .
Может кто-нибудь поделиться, как устранить эту ошибку?
Тест проходит, когда я заменяю 1 на None:
def test_info(session):
session.execute.return_value.scalar.return_value = None
result = get_info(session, 1)
assert result is None
Не знаю, почему это происходит.
Я сделал это следующим образом:
def test_get_cust_id(session, mocker):
mock = mocker.MagicMock()
session.execute.return_value = mock
mock.scalar.return_value = 2
cust_id = get_cust_id(session)
assert cust_id == 2
Подробнее здесь: [url]https://stackoverflow.com/questions/79248373/python-unit-tests-sql-alchemy-automap[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия