1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
TL;DR
-----
::
>>> from mockito import *
>>> myMock = mock()
>>> when(myMock).getStuff().thenReturn('stuff')
<mockito.invocation.AnswerSelector object at 0x00CA0BB0>
>>> myMock.getStuff()
'stuff'
>>> verify(myMock).getStuff()
>>> when(myMock).doSomething().thenRaise(Exception('Did a bad thing'))
<mockito.invocation.AnswerSelector object at 0x00CA0C10>
>>> myMock.doSomething()
Traceback (most recent call last):
<...>
Exception: Did a bad thing
No difference whatsoever when you mock modules
::
>>> import os.path
>>> when(os.path).exists('somewhere/somewhat').thenReturn(True)
<mockito.invocation.AnswerSelector object at 0x00D394F0>
>>> when(os.path).exists('somewhere/something').thenReturn(False)
<mockito.invocation.AnswerSelector object at 0x00C7D1B0>
>>> os.path.exists('somewhere/somewhat')
True
>>> os.path.exists('somewhere/something')
False
>>> os.path.exists('another_place')
Traceback (most recent call last):
<...>
mockito.invocation.InvocationError: You called exists with ('another_place',) as
arguments but we did not expect that.
>>> when(os.path).exist('./somewhat').thenReturn(True)
Traceback (most recent call last):
<...>
mockito.invocation.InvocationError: You tried to stub a method 'exist'
the object (<module 'ntpath' from ...>) doesn't have.
If that's too strict, you can change it
::
>>> when(os.path, strict=False).exist('another_place').thenReturn('well, nice here')
<mockito.invocation.AnswerSelector object at 0x00D429B0>
>>> os.path.exist('another_place')
'well, nice here'
>>> os.path.exist('and here?')
>>>
No surprise, you can do the same with your classes
::
>>> class Dog(object):
... def bark(self):
... return "Wau"
...
>>> when(Dog).bark().thenReturn('Miau!')
<mockito.invocation.AnswerSelector object at 0x00D42390>
>>> rex = Dog()
>>> rex.bark()
'Miau!'
or just with instances, first unstub
::
>>> unstub()
>>> rex.bark()
'Wau'
then do
::
>>> when(rex).bark().thenReturn('Grrrrr').thenReturn('Wuff')
<mockito.invocation.AnswerSelector object at 0x00D48790>
and get something different on consecutive calls
::
>>> rex.bark()
'Grrrrr'
>>> rex.bark()
'Wuff'
>>> rex.bark()
'Wuff'
and since you stubbed an instance, a different instance will not be stubbed
::
>>> bello = Dog()
>>> bello.bark()
'Wau'
You have 4 modifiers when verifying
::
>>> verify(rex, times=3).bark()
>>> verify(rex, atleast=1).bark()
>>> verify(rex, atmost=3).bark()
>>> verify(rex, between=[1,3]).bark()
>>>
Finally, we have two matchers
::
>>> myMock = mock()
>>> when(myMock).do(any(int)).thenReturn('A number')
<mockito.invocation.AnswerSelector object at 0x00D394B0>
>>> when(myMock).do(any(str)).thenReturn('A string')
<mockito.invocation.AnswerSelector object at 0x00D39E70>
>>> myMock.do(2)
'A number'
>>> myMock.do('times')
'A string'
>>> verify(myMock).do(any(int))
>>> verify(myMock).do(any(str))
>>> verify(myMock).do(contains('time'))
>>> exit()
.. toctree::
:maxdepth: 2
|