本文整理汇总了Python中the_tale.game.logic_storage.LogicStorage._save_on_exception方法的典型用法代码示例。如果您正苦于以下问题:Python LogicStorage._save_on_exception方法的具体用法?Python LogicStorage._save_on_exception怎么用?Python LogicStorage._save_on_exception使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类the_tale.game.logic_storage.LogicStorage
的用法示例。
在下文中一共展示了LogicStorage._save_on_exception方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: LogicStorageTests
# 需要导入模块: from the_tale.game.logic_storage import LogicStorage [as 别名]
# 或者: from the_tale.game.logic_storage.LogicStorage import _save_on_exception [as 别名]
#.........这里部分代码省略.........
# skipped heroes saved, but not processed
self.storage.skipped_heroes.add(self.hero_1.id)
with mock.patch('the_tale.game.actions.prototypes.ActionBase.process_turn') as action_process_turn:
self.storage.process_turn()
self.assertEqual(action_process_turn.call_count, 1)
with mock.patch('the_tale.game.logic_storage.LogicStorage._save_hero_data') as save_hero_data:
self.storage.save_changed_data()
self.assertEqual(save_hero_data.call_count, 1)
@mock.patch('the_tale.game.heroes.prototypes.HeroPrototype.can_process_turn', lambda self, turn: True)
def test_process_turn__can_process_turn(self):
with mock.patch('the_tale.game.actions.prototypes.ActionBase.process_turn') as action_process_turn:
self.storage.process_turn(continue_steps_if_needed=False)
self.assertEqual(action_process_turn.call_count, 2)
@mock.patch('the_tale.game.heroes.prototypes.HeroPrototype.can_process_turn', lambda self, turn: False)
def test_process_turn__can_not_process_turn(self):
with mock.patch('the_tale.game.actions.prototypes.ActionBase.process_turn') as action_process_turn:
self.storage.process_turn(continue_steps_if_needed=False)
self.assertEqual(action_process_turn.call_count, 0)
def test_process_turn___exception_raises(self):
def process_turn_raise_exception(action):
if action.hero.id == self.hero_2.id:
raise Exception('error')
with mock.patch('the_tale.game.actions.prototypes.ActionBase.process_turn', process_turn_raise_exception):
with mock.patch('the_tale.game.logic_storage.LogicStorage._save_on_exception') as _save_on_exception:
with mock.patch('django.conf.settings.TESTS_RUNNING', False):
self.storage.process_turn()
self.assertIn(self.hero_2.actions.current_action.bundle_id, self.storage.ignored_bundles)
self.assertEqual(_save_on_exception.call_count, 1)
self.assertEqual(_save_on_exception.call_args, mock.call())
@mock.patch('the_tale.game.conf.game_settings.SAVE_ON_EXCEPTION_TIMEOUT', 0)
def test_save_on_exception(self):
# hero 1 not saved due to one bundle with hero 3
# hero 2 saved
# hero 3 not saved
# hero 4 saved
result, account_3_id, bundle_3_id = register_user('test_user_3', '[email protected]', '111111')
self.storage.load_account_data(AccountPrototype.get_by_id(account_3_id))
hero_3 = self.storage.accounts_to_heroes[account_3_id]
result, account_4_id, bundle_4_id = register_user('test_user_4', '[email protected]', '111111')
self.storage.load_account_data(AccountPrototype.get_by_id(account_4_id))
hero_4 = self.storage.accounts_to_heroes[account_4_id]
self.hero_1.actions.current_action.bundle_id = hero_3.actions.current_action.bundle_id
saved_heroes = set()
def save_hero_data(storage, hero_id, **kwargs):
saved_heroes.add(hero_id)
self.storage.ignored_bundles.add(hero_3.actions.current_action.bundle_id)