Форум сайта python.su
0
Есть в файле метод
db = DataBase() def some_func(db, text): list = обращение к базе return list
Офлайн
221
Ну в вышеуказанном куске кода some_func это не метод, а функция.
Замокать можно используя модуль unittest.mock , там есть и patch и сам Mock, вполне хватает примеров.
Офлайн
0
JOHN_16Да,примеров много, но как то не работает!!! С классами писал и все ок, но вот функцию замокать не получается.
Ну в вышеуказанном куске кода some_func это не метод, а функция.Замокать можно используя модуль unittest.mock , там есть и patch и сам Mock, вполне хватает примеров.
from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.orm import Session from services.DAL.batabase import DataBase from sqlalchemy.sql import update class Message: def __init__(self): self.id = None self.text = None LIMIT = 100 def get_list_messages(db): session = Session(db.engine) try: list_messages = session.query(db.message).limit(LIMIT).all() except SQLAlchemyError: raise finally: session.close() return list_messages def update_message(db, message): session = Session(db.engine) try: statement = update(db.message).values(text=message.text).where(db.message.id == message.id) session.execute(statement) session.commit() except SQLAlchemyError: session.rollback() finally: session.close() def run_check(db): try: list_messages = get_list_messages(db) if list_messages: for message in list_messages: message.text = "DELETE" update_message(db, message) except Exception as e: print(str(e)) db = DataBase() run_check(db)
from unittest.mock import patch from unittest.mock import Mock from unittest.mock import MagicMock from temp_for_mock import Message, get_list_messages, update_message, run_check from services.DAL.batabase import DataBase def create_message(id, text): message = Message() message.id = id message.text = text return message message1 = create_message(1, "message1") message2 = create_message(2, "message2") list_messages = [message1, message2] db = Mock() with patch('temp_for_mock.get_list_messages') as mock_get_list: mock_get_list.return_value = list_messages list = get_list_messages(db) print(list)
Отредактировано Pit (Янв. 31, 2019 07:50:47)
Офлайн
857
Офлайн