Split the tests

It makes it easier in future to conditionally run some tests(eg.
to not test PTT for receiver-only rigs), or to run tests in
isolation (after renaming them).
It makes it easier to look at failing tests because pytest prints
the code of the failing test up to the failure including any
function that called the failed test (in this case would print
everything from def test_with_open() up to the line with the
failed assert.
pull/1836/head
Daniele Forsi IU5HKX 2025-08-09 10:50:10 +02:00
rodzic 8e4bcbcede
commit 2890da9d79
1 zmienionych plików z 46 dodań i 28 usunięć

Wyświetl plik

@ -41,23 +41,10 @@ class TestClass:
assert rig.token_lookup("") is None assert rig.token_lookup("") is None
def test_with_open(self, model, rig_file, serial_speed): def do_test_frequency(self, rig):
"""Call all the methods that depend on open()""" """Frequency tests"""
rig = Hamlib.Rig(model)
assert rig is not None
assert rig.state.comm_state == 0
assert rig.state.comm_status == Hamlib.RIG_COMM_STATUS_DISCONNECTED
assert rig.set_conf("rig_pathname", rig_file) is None
assert rig.set_conf("serial_speed", str(serial_speed)) is None
assert rig.open() is None
assert rig.state.comm_state == 1
assert rig.state.comm_status == Hamlib.RIG_COMM_STATUS_OK
info = rig.get_info()
assert isinstance(info, str)
# Frequency
# TODO use a frequency suitable for the VFO
frequency = 5700000000 frequency = 5700000000
assert rig.set_freq(Hamlib.RIG_VFO_CURR, frequency) is None assert rig.set_freq(Hamlib.RIG_VFO_CURR, frequency) is None
assert rig.get_freq() == 5700000000.0 assert rig.get_freq() == 5700000000.0
@ -66,7 +53,9 @@ class TestClass:
assert isinstance(rig.get_freq(Hamlib.RIG_VFO_CURR), float) assert isinstance(rig.get_freq(Hamlib.RIG_VFO_CURR), float)
assert rig.get_freq(Hamlib.RIG_VFO_CURR) == 5700000000.5 assert rig.get_freq(Hamlib.RIG_VFO_CURR) == 5700000000.5
# VFO
def do_test_vfo(self, rig):
"""VFO tests"""
assert rig.set_vfo(Hamlib.RIG_VFO_A) is None assert rig.set_vfo(Hamlib.RIG_VFO_A) is None
assert rig.get_vfo() == Hamlib.RIG_VFO_A assert rig.get_vfo() == Hamlib.RIG_VFO_A
@ -78,7 +67,9 @@ class TestClass:
assert rig.get_split_vfo() == [Hamlib.RIG_SPLIT_OFF, Hamlib.RIG_VFO_B] assert rig.get_split_vfo() == [Hamlib.RIG_SPLIT_OFF, Hamlib.RIG_VFO_B]
assert rig.get_split_vfo(Hamlib.RIG_VFO_CURR) == [Hamlib.RIG_SPLIT_OFF, Hamlib.RIG_VFO_B] assert rig.get_split_vfo(Hamlib.RIG_VFO_CURR) == [Hamlib.RIG_SPLIT_OFF, Hamlib.RIG_VFO_B]
# RIT and XIT
def do_test_rit_xit(self, rig):
"""RIT and XIT tests"""
assert rig.set_rit(Hamlib.RIG_VFO_CURR, 100) is None assert rig.set_rit(Hamlib.RIG_VFO_CURR, 100) is None
assert rig.get_rit() == 100 assert rig.get_rit() == 100
@ -87,7 +78,9 @@ class TestClass:
assert rig.get_xit() == 200 assert rig.get_xit() == 200
assert rig.get_xit(Hamlib.RIG_VFO_CURR) == 200 assert rig.get_xit(Hamlib.RIG_VFO_CURR) == 200
# Antenna
def do_test_antenna(self, rig):
"""Antenna tests"""
# FIXME should use a RIG_ANT_* constant but they aren't available in the bindings # FIXME should use a RIG_ANT_* constant but they aren't available in the bindings
RIG_ANT_1 = 1<<0 RIG_ANT_1 = 1<<0
@ -101,7 +94,9 @@ class TestClass:
assert rig.set_ant(RIG_ANT_1, option, Hamlib.RIG_VFO_CURR) is None assert rig.set_ant(RIG_ANT_1, option, Hamlib.RIG_VFO_CURR) is None
assert rig.get_ant(RIG_ANT_CURR, Hamlib.RIG_VFO_A) == expected assert rig.get_ant(RIG_ANT_CURR, Hamlib.RIG_VFO_A) == expected
# Squelch codes and tones
def do_test_squelch(self, rig):
"""Squelch codes and tones"""
assert rig.set_ctcss_sql(Hamlib.RIG_VFO_CURR, 885) is None assert rig.set_ctcss_sql(Hamlib.RIG_VFO_CURR, 885) is None
assert rig.get_ctcss_sql() == 885 assert rig.get_ctcss_sql() == 885
@ -116,16 +111,10 @@ class TestClass:
assert rig.get_dcs_sql() == 134 assert rig.get_dcs_sql() == 134
assert rig.get_dcs_sql(Hamlib.RIG_VFO_CURR) == 134 assert rig.get_dcs_sql(Hamlib.RIG_VFO_CURR) == 134
# Callbacks
self.do_test_callbacks(rig)
assert rig.close() is None def do_test_callback(self, rig):
assert rig.state.comm_state == 0 """Callback tests"""
assert rig.state.comm_status == Hamlib.RIG_COMM_STATUS_DISCONNECTED
info = rig.get_info()
assert info is None
def do_test_callbacks(self, rig):
# Frequency event callback # Frequency event callback
def freq_callback(vfo, freq, arg): def freq_callback(vfo, freq, arg):
assert (1, 144200000.5, 1234567890) == (vfo, freq, arg) assert (1, 144200000.5, 1234567890) == (vfo, freq, arg)
@ -202,6 +191,35 @@ class TestClass:
assert rig.set_spectrum_callback(None) is None assert rig.set_spectrum_callback(None) is None
def test_with_open(self, model, rig_file, serial_speed):
"""Call all the methods that depend on open()"""
rig = Hamlib.Rig(model)
assert rig is not None
assert rig.state.comm_state == 0
assert rig.state.comm_status == Hamlib.RIG_COMM_STATUS_DISCONNECTED
assert rig.set_conf("rig_pathname", rig_file) is None
assert rig.set_conf("serial_speed", str(serial_speed)) is None
assert rig.open() is None
assert rig.state.comm_state == 1
assert rig.state.comm_status == Hamlib.RIG_COMM_STATUS_OK
info = rig.get_info()
assert isinstance(info, str)
self.do_test_frequency(rig)
self.do_test_vfo(rig)
self.do_test_rit_xit(rig)
self.do_test_antenna(rig)
self.do_test_squelch(rig)
self.do_test_callback(rig)
assert rig.close() is None
assert rig.state.comm_state == 0
assert rig.state.comm_status == Hamlib.RIG_COMM_STATUS_DISCONNECTED
info = rig.get_info()
assert info is None
@pytest.mark.skipif('config.getoption("model") != Hamlib.RIG_MODEL_DUMMY') @pytest.mark.skipif('config.getoption("model") != Hamlib.RIG_MODEL_DUMMY')
def test_misc(self, model): def test_misc(self, model):
"""Just call all the methods""" """Just call all the methods"""