2024-05-16 16:08:58 发布
网友
我在这样的模块中有一段代码:
在我的工人.py公司名称:
from gevent import sleep class MyWorker(object): def run(self): for _ in range(10): do_something() sleep(1)
然后我想在嘲笑睡眠的同时测试这个。我试过多种方法,但都失败了。我认为有一种方法是可行的:
我又试了一些,结果发现修复起来非常简单: 将from x.y.z.MyWorker import MyWorker更改为from x.y.z.MyWorker import MyWorker, sleep,或者您可以执行from x.y.z.MyWorker import *并且所有单元测试都可以工作。上面的评论给了我这个想法。在
from x.y.z.MyWorker import MyWorker
from x.y.z.MyWorker import MyWorker, sleep
from x.y.z.MyWorker import *
我最后要做的就是:
from x.y.z.MyWorker import MyWorker, sleep Class TestMyWorker(unittest.TestCase): def setUp(self): self.patcher = patch('x.y.z.MyWorker.sleep') self.patcher.start() def tearDown(self): self.patcher.stop() def Test_my_worker_success(): MyWorker().run() def Test_my_worker_fail(): ...
这是嘲笑睡眠的完整工作版本
# TestMyWorker.py #!/usr/bin/python import unittest import mock # myWorker.py MyWorker(class) from myWorker import MyWorker class TestWorker(unittest.TestCase): # myWorker.py - mock away sleep @mock.patch('myWorker.sleep') def test_my_worker(self, mock_sleep): # mock away the sleep() mock_sleep.return_value = False worker = MyWorker() # should run witout calling sleep() worker.run() self.assertFalse(mock_sleep.sleep.called,"Fail - sleep really called!") if __name__ == '__main__': suite = unittest.TestLoader().loadTestsFromTestCase(TestWorker) unittest.TextTestRunner(verbosity=2).run(suite)
我又试了一些,结果发现修复起来非常简单: 将
from x.y.z.MyWorker import MyWorker
更改为from x.y.z.MyWorker import MyWorker, sleep
,或者您可以执行from x.y.z.MyWorker import *
并且所有单元测试都可以工作。上面的评论给了我这个想法。在我最后要做的就是:
这是嘲笑睡眠的完整工作版本
相关问题 更多 >
编程相关推荐