forked from huangxin/ailai
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
||
import unittest
|
||
from unittest.mock import patch, MagicMock
|
||
|
||
# 假设你的模块名为 CU,Catch 定义在 CU/Catch.py
|
||
from CU.Catch import Catch, CatchStatus
|
||
|
||
class TestCatchRelayControl(unittest.TestCase):
|
||
|
||
@patch('CU.EMV.close') # 只mock close函数,因为我们只关心关闭电磁阀1
|
||
def test_catch_status_ctake_calls_close_relay(self, mock_close):
|
||
# 创建一个 mock 的 RobotClient(不需要真实实现)
|
||
mock_robot_client = MagicMock()
|
||
mock_robot_client.time_delay_put = 0.5
|
||
mock_robot_client.con_ios = [0, 1, 2]
|
||
|
||
# 实例化 Catch 类
|
||
catch_instance = Catch(mock_robot_client)
|
||
|
||
# 设置状态为 CTake
|
||
catch_instance.catch_status = CatchStatus.CTake
|
||
|
||
# 第一次 run,应该触发 close(1, 0, 0)
|
||
catch_instance.run()
|
||
|
||
# 验证 close 是否被调用,并且是 close(1, 0, 0)
|
||
mock_close.assert_called_once_with(1, 0, 0)
|
||
|
||
# 再次 run,不应再次调用 close
|
||
catch_instance.run()
|
||
self.assertEqual(mock_close.call_count, 1) # 确保只调用了一次
|
||
|
||
if __name__ == '__main__':
|
||
unittest.main() |