10000 Follow main package structure for tests (#1317) · MAXIGAMESSUPPER/python-kasa@fcb604e · GitHub
[go: up one dir, main page]

Skip to content

Commit fcb604e

Browse files
authored
Follow main package structure for tests (python-kasa#1317)
* Transport tests under tests/transports/ * Protocol tests under tests/protocols/ * IOT tests under iot/ * Plus some minor cleanups, most code changes are related to splitting up smart & iot tests
1 parent 6adb2b5 commit fcb604e

18 files changed

+395
-394
lines changed

tests/device_fixtures.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,9 @@ def parametrize(
217217
model_filter=ALL_DEVICES - WITH_EMETER,
218218
protocol_filter={"SMART", "IOT"},
219219
)
220+
has_emeter_smart = parametrize(
221+
"has emeter smart", model_filter=WITH_EMETER_SMART, protocol_filter={"SMART"}
222+
)
220223
has_emeter_iot = parametrize(
221224
"has emeter iot", model_filter=WITH_EMETER_IOT, protocol_filter={"IOT"}
222225
)

tests/test_emeter.py renamed to tests/iot/modules/test_emeter.py

Lines changed: 29 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,9 @@
1212

1313
from kasa import Device, DeviceType, EmeterStatus, Module
1414
from kasa.interfaces.energy import Energy
15-
from kasa.iot import IotDevice, IotStrip
15+
from kasa.iot import IotStrip
1616
from kasa.iot.modules.emeter import Emeter
17-
from kasa.smart import SmartDevice
18-
from kasa.smart.modules import Energy as SmartEnergyModule
19-
from kasa.smart.smartmodule import SmartModule
20-
21-
from .conftest import has_emeter, has_emeter_iot, no_emeter
17+
from tests.conftest import has_emeter_iot, no_emeter_iot
2218

2319
CURRENT_CONSUMPTION_SCHEMA = Schema(
2420
Any(
@@ -40,30 +36,23 @@
4036
)
4137

4238

43-
@no_emeter
39+
@no_emeter_iot
4440
async def test_no_emeter(dev):
4541
assert not dev.has_emeter
4642

4743
with pytest.raises(AttributeError):
4844
await dev.get_emeter_realtime()
49-
# Only iot devices support the historical stats so other
50-
# devices will not implement the methods below
51-
if isinstance(dev, IotDevice):
52-
with pytest.raises(AttributeError):
53-
await dev.get_emeter_daily()
54-
with pytest.raises(AttributeError):
55-
await dev.get_emeter_monthly()
56-
with pytest.raises(AttributeError):
57-
await dev.erase_emeter_stats()
58-
59-
60-
@has_emeter
61-
async def test_get_emeter_realtime(dev):
62-
if isinstance(dev, SmartDevice):
63-
mod = SmartEnergyModule(dev, str(Module.Energy))
64-
if not await mod._check_supported():
65-
pytest.skip(f"Energy module not supported for {dev}.")
6645

46+
with pytest.raises(AttributeError):
47+
await dev.get_emeter_daily()
48+
with pytest.raises(AttributeError):
49+
await dev.get_emeter_monthly()
50+
with pytest.raises(AttributeError):
51+
await dev.erase_emeter_stats()
52+
53+
54+
@has_emeter_iot
55+
async def test_get_emeter_realtime(dev):
6756
emeter = dev.modules[Module.Energy]
6857

6958
current_emeter = await emeter.get_status()
@@ -136,7 +125,7 @@ async def test_emeter_status(dev):
136125

137126

138127
@pytest.mark.skip("not clearing your stats..")
139-
@has_emeter
128+
@has_emeter_iot
140129
async def test_erase_emeter_stats(dev):
141130
emeter = dev.modules[Module.Energy]
142131

@@ -191,37 +180,22 @@ def data(self):
191180
assert emeter.consumption_today == 0.500
192181

193182

194-
@has_emeter
183+
@has_emeter_iot
195184
async def test_supported(dev: Device):
196-
if isinstance(dev, SmartDevice):
197-
mod = SmartEnergyModule(dev, str(Module.Energy))
198-
if not await mod._check_supported():
199-
pytest.skip(f"Energy module not supported for {dev}.")
200185
energy_module = dev.modules.get(Module.Energy)
201186
assert energy_module
202187

203-
if isinstance(dev, IotDevice):
204-
info = (
205-
dev._last_update
206-
if not isinstance(dev, IotStrip)
207-
else dev.children[0].internal_state
208-
)
209-
emeter = info[energy_module._module]["get_realtime"]
210-
has_total = "total" in emeter or "total_wh" in emeter
211-
has_voltage_current = "voltage" in emeter or "voltage_mv" in emeter
212-
assert (
213-
energy_module.supports(Energy.ModuleFeature.CONSUMPTION_TOTAL) is has_total
214-
)
215-
assert (
216-
energy_module.supports(Energy.ModuleFeature.VOLTAGE_CURRENT)
217-
is has_voltage_current
218-
)
219-
assert energy_module.supports(Energy.ModuleFeature.PERIODIC_STATS) is True
220-
else:
221-
assert isinstance(energy_module, SmartModule)
222-
assert energy_module.supports(Energy.ModuleFeature.CONSUMPTION_TOTAL) is False
223-
assert energy_module.supports(Energy.ModuleFeature.PERIODIC_STATS) is False
224-
if energy_module.supported_version < 2:
225-
assert energy_module.supports(Energy.ModuleFeature.VOLTAGE_CURRENT) is False
226-
else:
227-
assert energy_module.supports(Energy.ModuleFeature.VOLTAGE_CURRENT) is True
188+
info = (
189+
dev._last_update
190+
if not isinstance(dev, IotStrip)
191+
else dev.children[0].internal_state
192+
)
193+
emeter = info[energy_module._module]["get_realtime"]
194+
has_total = "total" in emeter or "total_wh" in emeter
195+
has_voltage_current = "voltage" in emeter or "voltage_mv" in emeter
196+
assert energy_module.supports(Energy.ModuleFeature.CONSUMPTION_TOTAL) is has_total
197+
assert (
198+
energy_module.supports(Energy.ModuleFeature.VOLTAGE_CURRENT)
199+
is has_voltage_current
200+
)
201+
assert energy_module.supports(Energy.ModuleFeature.PERIODIC_STATS) is True
File renamed without changes.

0 commit comments

Comments
 (0)
0