|
1 | 1 | """Test the driver correctly parses a tags file and responds with correct data."""
|
2 | 2 | import asyncio
|
3 | 3 | import contextlib
|
| 4 | +from unittest import mock |
4 | 5 |
|
5 | 6 | import pytest
|
6 | 7 |
|
|
10 | 11 | from pymodbus.server.async_io import ModbusTcpServer
|
11 | 12 |
|
12 | 13 | from clickplc import ClickPLC, command_line
|
| 14 | +from clickplc.mock import ClickPLC as MockClickPLC |
13 | 15 |
|
14 | 16 | # Test against pymodbus simulator
|
15 | 17 | ADDRESS = '127.0.0.1'
|
|
20 | 22 |
|
21 | 23 | @pytest.fixture(scope='session', autouse=autouse)
|
22 | 24 | async def _sim():
|
23 |
| - """Start a modbus server simulator.""" |
| 25 | + """Start a modbus server and datastore.""" |
24 | 26 | from pymodbus.datastore import (
|
25 | 27 | ModbusSequentialDataBlock,
|
26 | 28 | ModbusServerContext,
|
@@ -81,6 +83,18 @@ def test_driver_cli(capsys):
|
81 | 83 | assert 'df100' in captured.out
|
82 | 84 |
|
83 | 85 |
|
| 86 | +@mock.patch('clickplc.ClickPLC', MockClickPLC) |
| 87 | +def test_driver_cli_tags_mock(capsys): |
| 88 | + """Confirm the (mocked) commandline interface works without a tags file.""" |
| 89 | + command_line([ADDRESS, 'clickplc/tests/plc_tags.csv']) |
| 90 | + captured = capsys.readouterr() |
| 91 | + assert 'P_101' in captured.out |
| 92 | + assert 'VAHH_101_OK' in captured.out |
| 93 | + assert 'TI_101' in captured.out |
| 94 | + with pytest.raises(SystemExit): |
| 95 | + command_line([ADDRESS, 'tags', 'bogus']) |
| 96 | + |
| 97 | + |
84 | 98 | def test_driver_cli_tags(capsys):
|
85 | 99 | """Confirm the commandline interface works with a tags file."""
|
86 | 100 | command_line([ADDRESS, 'clickplc/tests/plc_tags.csv'])
|
|
0 commit comments