예제 #1
0
    def test_with_classmethod_and_op(self):
        """Testing SpyOpMatchAny with classmethod and op"""
        self.agency.spy_on(MathClass.class_do_math,
                           owner=MathClass,
                           op=SpyOpMatchAny([
                               {
                                   'kwargs': {
                                       'a': 5,
                                       'b': 3,
                                   },
                                   'op':
                                   SpyOpMatchInOrder([
                                       {
                                           'kwargs': {
                                               'a': 5,
                                               'b': 3,
                                               'x': 1,
                                           },
                                           'op': SpyOpReturn(123),
                                       },
                                       {
                                           'kwargs': {
                                               'a': 5,
                                               'b': 3,
                                               'x': 2,
                                           },
                                           'op': SpyOpReturn(456),
                                       },
                                   ]),
                               },
                           ]))

        self.assertEqual(MathClass.class_do_math(a=5, b=3, x=1), 123)
        self.assertEqual(MathClass.class_do_math(a=5, b=3, x=2), 456)
예제 #2
0
    def test_with_classmethod(self):
        """Testing SpyOpRaise with classmethod"""
        self.agency.spy_on(MathClass.class_do_math,
                           owner=MathClass,
                           op=SpyOpRaise(ValueError('foo')))

        with self.assertRaisesRegexp(ValueError, 'foo'):
            MathClass.class_do_math(5, 3)
예제 #3
0
    def test_with_classmethod(self):
        """Testing SpyOpReturn with classmethod"""
        self.agency.spy_on(MathClass.class_do_math,
                           owner=MathClass,
                           op=SpyOpReturn('abc123'))

        self.assertEqual(MathClass.class_do_math(5, 3), 'abc123')
예제 #4
0
    def test_call_with_original_true_and_classmethod(self):
        """Testing FunctionSpy calls with call_original=True and classmethod"""
        self.agency.spy_on(MathClass.class_do_math, call_original=True)
        result = MathClass.class_do_math()

        self.assertEqual(result, 10)
        self.assertEqual(len(MathClass.class_do_math.calls), 1)
        self.assertTrue(MathClass.class_do_math.last_called_with(a=2, b=5))
예제 #5
0
    def test_with_classmethod(self):
        """Testing SpyOpReturnInOrder with classmethod"""
        self.agency.spy_on(MathClass.class_do_math,
                           owner=MathClass,
                           op=SpyOpReturnInOrder([
                               'abc123',
                               'def456',
                               'ghi789',
                           ]))

        self.assertEqual(MathClass.class_do_math(5, 3), 'abc123')
        self.assertEqual(MathClass.class_do_math(5, 3), 'def456')
        self.assertEqual(MathClass.class_do_math(5, 3), 'ghi789')

        message = re.escape(
            "class_do_math was called 4 time(s), but only 3 call(s) were "
            "expected. Latest call: <SpyCall(args=(), kwargs={'a': 5, "
            "'b': 3}, returned=None, raised=None)>")

        with self.assertRaisesRegexp(UnexpectedCallError, message):
            MathClass.class_do_math(5, 3)
예제 #6
0
    def test_call_with_original_true_and_classmethod_kwargs(self):
        """Testing FunctionSpy calls with call_original=True and classmethod
        with all keyword arguments
        """
        self.agency.spy_on(MathClass.class_do_math, call_original=True)
        result = MathClass.class_do_math(a=10, b=20)

        self.assertEqual(result, 200)
        self.assertEqual(len(MathClass.class_do_math.calls), 1)
        self.assertEqual(len(MathClass.class_do_math.calls[0].args), 0)
        self.assertEqual(MathClass.class_do_math.calls[0].kwargs, {
            'a': 10,
            'b': 20
        })
예제 #7
0
    def test_with_classmethod(self):
        """Testing SpyOpMatchInOrder with classmethod"""
        self.agency.spy_on(MathClass.class_do_math,
                           owner=MathClass,
                           op=SpyOpMatchInOrder([
                               {
                                   'kwargs': {
                                       'a': 5,
                                       'b': 3,
                                   },
                                   'call_fake': lambda a, b: a - b
                               },
                           ]))

        self.assertEqual(MathClass.class_do_math(a=5, b=3), 2)