新增模拟硬件测试功能
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
import importlib.util
|
||||
import time
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
MODULE_PATH = Path(__file__).resolve().parents[1] / "core" / "simulated_device.py"
|
||||
SPEC = importlib.util.spec_from_file_location("simulated_device_under_test", MODULE_PATH)
|
||||
SIMULATED = importlib.util.module_from_spec(SPEC)
|
||||
SPEC.loader.exec_module(SIMULATED)
|
||||
|
||||
|
||||
class SimulatedDeviceTests(unittest.TestCase):
|
||||
def test_connect_read_and_write_without_hardware(self):
|
||||
device = SIMULATED.SimulatedDevice()
|
||||
self.assertTrue(device.connect())
|
||||
self.assertTrue(device.set_motor_position(0))
|
||||
self.assertIsInstance(device.get_pressure(), float)
|
||||
self.assertIsInstance(device.get_flow(), float)
|
||||
self.assertEqual(len(device.command_log), 1)
|
||||
device.disconnect()
|
||||
self.assertFalse(device.connected)
|
||||
|
||||
def test_pressure_model_responds_to_valve_position(self):
|
||||
device = SIMULATED.SimulatedDevice()
|
||||
device.connect()
|
||||
device.set_motor_position(0)
|
||||
time.sleep(0.02)
|
||||
open_pressure = device.get_pressure()
|
||||
device.set_motor_position(1000)
|
||||
time.sleep(0.02)
|
||||
closed_pressure = device.get_pressure()
|
||||
self.assertGreaterEqual(open_pressure, 0.0)
|
||||
self.assertGreaterEqual(closed_pressure, 0.0)
|
||||
self.assertEqual(device.read_current_position(), 1000.0)
|
||||
device.disconnect()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user