def test_bmp__iter__returns_iterator():
    """ The iter methods must return an iterator in order to work properly """
    with mock.patch('mycodo.sensors.bmp180.BMP180Sensor.get_measurement') as mock_measure:
        # create our object
        mock_measure.side_effect = [67, 52]  # first reading, second reading
        bmp = BMP180Sensor(1)
        # check __iter__ method return
        assert isinstance(bmp.__iter__(), Iterator)
def test_bmp_read_logs_unknown_errors():
    """ verify that IOErrors are logged """
    with LogCapture() as log_cap:
        # force an Exception to be raised when get_measurement is called
        with mock.patch('mycodo.sensors.bmp180.BMP180Sensor.get_measurement', side_effect=Exception('msg')):
            BMP180Sensor(1).read()
    expected_logs = ('mycodo.sensors.bmp180', 'ERROR', 'BMP180Sensor raised an exception when taking a reading: msg')
    assert expected_logs in log_cap.actual()
def test_bmp_next_returns_dict():
    """ next returns dict(altitude=float,pressure=int,temperature=float) """
    with mock.patch('mycodo.sensors.bmp180.BMP180Sensor.get_measurement') as mock_measure:
        # create our object
        mock_measure.side_effect = [(67, 44, 3000),  # first reading
                                    (52, 64, 3500)]  # second reading
        bmp = BMP180Sensor(1)
        assert bmp.next() == dict(altitude=3000.00,
                                  pressure=44,
                                  temperature=67.00)
def test_bmp_iterates_using_in():
    """ Verify that a BMP180Sensor object can use the 'in' operator """
    with mock.patch('mycodo.sensors.bmp180.BMP180Sensor.get_measurement') as mock_measure:
        mock_measure.side_effect = [(67, 23, 3000),
                                    (52, 25, 3200),
                                    (37, 27, 3400),
                                    (45, 30, 3300)]  # first reading, second reading

        bmp = BMP180Sensor(1)
        expected_result_list = [dict(altitude=3000, pressure=23.00, temperature=67.00),
                                dict(altitude=3200, pressure=25.00, temperature=52.00),
                                dict(altitude=3400, pressure=27.00, temperature=37.00),
                                dict(altitude=3300, pressure=30.00, temperature=45.00)]
        assert expected_result_list == [temp for temp in bmp]
def test_bmp_read_updates_temp():
    """  Verify that BMP180Sensor(1).read() gets the average temp """
    with mock.patch('mycodo.sensors.bmp180.BMP180Sensor.get_measurement') as mock_measure:
        # create our object
        mock_measure.side_effect = [(67, 33, 2000),
                                    (52, 59, 2500)]  # first reading, second reading
        bmp = BMP180Sensor(1)
        assert bmp._altitude == 0  # initial values
        assert bmp._pressure == 0
        assert bmp._temperature == 0
        assert not bmp.read()  # updating the value using our mock_measure side effect has no error
        assert bmp._altitude == 2000.0  # first values
        assert bmp._pressure == 33.0
        assert bmp._temperature == 67.0
        assert not bmp.read()  # updating the value using our mock_measure side effect has no error
        assert bmp._altitude == 2500.0  # second values
        assert bmp._pressure == 59.0
        assert bmp._temperature == 52.0
def test_bmp_condition_properties():
    """ verify temperature property """
    with mock.patch('mycodo.sensors.bmp180.BMP180Sensor.get_measurement') as mock_measure:
        # create our object
        mock_measure.side_effect = [(67, 50, 3000),  # first reading
                                    (52, 55, 3500)]  # second reading
        bmp = BMP180Sensor(1)
        assert bmp._altitude == 0  # initial values
        assert bmp._pressure == 0
        assert bmp._temperature == 0
        assert bmp.altitude == 3000.00  # first reading with auto update
        assert bmp.altitude == 3000.00  # same first reading, not updated yet
        assert bmp.pressure == 50.00
        assert bmp.pressure == 50.00
        assert bmp.temperature == 67.00
        assert bmp.temperature == 67.00
        assert not bmp.read()  # update (no errors)
        assert bmp.altitude == 3500.00  # next readings
        assert bmp.pressure == 55.00
        assert bmp.temperature == 52.00
Beispiel #7
0
from mycodo.sensors.htu21d import HTU21DSensor
from mycodo.sensors.raspi import (RaspberryPiCPUTemp,
                                  RaspberryPiGPUTemp)
from mycodo.sensors.raspi_cpuload import RaspberryPiCPULoad
from mycodo.sensors.sht1x_7x import SHT1x7xSensor
from mycodo.sensors.sht2x import SHT2xSensor
from mycodo.sensors.tmp006 import TMP006Sensor
from mycodo.sensors.tsl2561 import TSL2561Sensor

# TODO: Find which errors when uncommented
# TODO: Need to mock GPIO for Travis CI
sensor_classes = [
    AtlasPT1000Sensor(0x00, 1),
    AM2315Sensor(1),
    # BME280Sensor(0x00, 1),
    BMP180Sensor(1),
    # DHT11Sensor(pigpio.pi(), 1),
    # DHT22Sensor(pigpio.pi(), 1),
    DS18B20Sensor('1'),
    HTU21DSensor(1),
    # K30Sensor(),
    RaspberryPiCPUTemp(),
    RaspberryPiGPUTemp(),
    RaspberryPiCPULoad(),
    TMP006Sensor(0x00, 1),
    TSL2561Sensor(0x00, 1),
    SHT1x7xSensor(1, 2, '5.0'),
    SHT2xSensor(0x00, 1)
]

def test_bmp_special_method_str():
    """ expect a __str__ format """
    assert "Altitude: 0.00" in str(BMP180Sensor(1))
    assert "Pressure: 0" in str(BMP180Sensor(1))
    assert "Temperature: 0.00" in str(BMP180Sensor(1))
def test_bmp_read_returns_1_on_exception():
    """ Verify the read() method returns true on error """
    with mock.patch('mycodo.sensors.bmp180.BMP180Sensor.get_measurement', side_effect=Exception):
        assert BMP180Sensor(1).read()
def test_bmp_raises_exception():
    """ stops iteration on read() error """
    with mock.patch('mycodo.sensors.bmp180.BMP180Sensor.get_measurement', side_effect=IOError):
        with pytest.raises(StopIteration):
            BMP180Sensor(1).next()
def test_bmp_special_method_repr():
    """ expect a __repr__ format """
    assert "<BMP180Sensor(temperature=0.00)(pressure=0)(altitude=0.00)>" in repr(BMP180Sensor(1))