Im практикующий с модульным тестированием и носовыми испытаниями из простой игры, и у меня есть раздел игры, в котором есть кубики с random.randint, которые мне нужно проверить. Я следовал этой статье о том, как проверить случайные события с притворнымСлучайный не работает с mock in nosetest
http://www.jjinux.com/2014/01/python-lightning-quick-introduction-to.html
Im получаю эту ошибку, когда я бегу nosetests хотя
ERROR: tests.ex47_tests.test_dice_roll
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg)
File "/usr/local/lib/python2.7/site-packages/mock/mock.py", line 1297, in patched
arg = patching.__enter__()
File "/usr/local/lib/python2.7/site-packages/mock/mock.py", line 1353, in __enter__
self.target = self.getter()
File "/usr/local/lib/python2.7/site-packages/mock/mock.py", line 1520, in <lambda>
getter = lambda: _importer(target)
File "/usr/local/lib/python2.7/site-packages/mock/mock.py", line 1210, in _importer
thing = _dot_lookup(thing, comp, import_path)
File "/usr/local/lib/python2.7/site-packages/mock/mock.py", line 1199, in _dot_lookup
__import__(import_path)
ImportError: No module named random
Я импортированные случайным поэтому не уверен, почему это ISN» t работает или это что-то связано с макетом?
Вот часть кода из файла файл игры и тесты (Ive не ставить весь код здесь, как я не думаю, что нужно)
game.py
class Intro(Rooms):
def enter(self):
print "Intro room"
print "You see the Gothon, you have to fight him!"
def dice_roll_fight(self):
print 'DICE ROLL'
dice_roll = randint(1,6)
print "You rolled a ", dice_roll
if dice_roll <= 2:
return 'death'
elif dice_roll >= 3:
return 'starter'
else:
print "ERROR try again"
ex47_tests.py
from nose.tools import *
from ex47.game import Intro
from mock import mock
import random
@mock.patch('ex47.game.random.randint')
def test_dice_roll(randint_mock):
randint_mock.return_value = 1
assert_equal(game.dice_roll_fight(), 'death')
@mock.patch('ex47.game.random.randint')
def test_dice_roll(randint_mock):
randint_mock.return_value = 2
assert_equal(game.dice_roll_fight(), 'death')
@mock.patch('ex47.game.random.randint')
def test_dice_roll(randint_mock):
randint_mock.return_value = 3
assert_equal(game.dice_roll_fight(), 'starter')
Не могли бы вы показать оператор импорта для '' random' в game.py'? – Oleksiy