zhongrj
2025-11-24 276323dce9613867abb3f58a4cc2abbfb2fd0dea
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
from django.test import TestCase
from app.testwatch import TestWatch
 
 
def test(a, b):
    return a + b
 
class TestTestWatch(TestCase):
    def test_methods(self):
        tw = TestWatch()
        self.assertTrue(tw.get_calls_count("app.tests.test_testwatch.test") == 0)
        self.assertTrue(tw.get_calls_count("app.tests.test_testwatch.nonexistent") == 0)
 
        # Test watch count
        tw.hook_pre(test, 1, 2)
        test(1, 2)
        tw.hook_post(test, 1, 2)
 
        self.assertTrue(tw.get_calls_count("app.tests.test_testwatch.test") == 1)
 
        tw.hook_pre(test, 1, 2)
        test(1, 2)
        tw.hook_post(test, 1, 2)
 
        self.assertTrue(tw.get_calls_count("app.tests.test_testwatch.test") == 2)
 
        @TestWatch.watch(testWatch=tw)
        def test2(d):
            d['flag'] = not d['flag']
 
        # Test intercept
        tw.intercept("app.tests.test_testwatch.test2")
        d = {'flag': True}
        test2(d)
        self.assertTrue(d['flag'])
 
        # Test function replacement intercept
        d = {
            'a': False,
            'b': False
        }
        @TestWatch.watch(testWatch=tw)
        def test3(d):
            d['a'] = True
 
        def replacement(d):
            d['b'] = True
 
        tw.intercept("app.tests.test_testwatch.test3", replacement)
        test3(d)
        self.assertFalse(d['a'])
        self.assertTrue(d['b'])