Skip to content

Add a convenience makefile & pytest suites#34

Open
nickles-lee wants to merge 3 commits into
jaapp:masterfrom
nickles-lee:devops-and-testing
Open

Add a convenience makefile & pytest suites#34
nickles-lee wants to merge 3 commits into
jaapp:masterfrom
nickles-lee:devops-and-testing

Conversation

@nickles-lee
Copy link
Copy Markdown

Additions

  • Adds a makefile for triggering tests, setting up venv, etc., etc., as a matter of convenience
  • Adds a config for async tests
  • Adds a variety of tests to spot possible regressions when external contributions are being made

Changes

  • Relocates manual / non pytest scripts to a manual_tests directory

Testing

make test
venv/bin/pytest tests/ -v
Test session starts (platform: darwin, Python 3.14.0, pytest 8.4.2, pytest-sugar 1.0.0)
cachedir: .pytest_cache
rootdir: [REDACTED]
configfile: pytest.ini
plugins: respx-0.22.0, pytest_freezer-0.4.9, unordered-0.7.0, asyncio-1.2.0, anyio-4.11.0, homeassistant-custom-component-0.13.294, sugar-1.0.0, socket-0.7.0, xdist-3.8.0, timeout-2.4.0, github-actions-annotate-failures-0.3.0, aiohttp-1.1.0, picked-0.5.1, requests-mock-1.12.1, cov-7.0.0, syrupy-5.0.0
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 244 items                                                       

 tests/test_api.py::TestMarstekUDPClient.test_init ✓          0% ▏         
 tests/test_api.py::TestMarstekUDPClient.test_init_with_remote_port ✓1% ▏         
 tests/test_api.py::TestMarstekUDPClient.test_connect ✓       1% ▎         
 tests/test_api.py::TestMarstekUDPClient.test_connect_already_connected ✓2% ▎         
 tests/test_api.py::TestMarstekUDPClient.test_disconnect ✓    2% ▎         
 tests/test_api.py::TestMarstekUDPClient.test_disconnect_not_connected ✓2% ▎         
 tests/test_api.py::TestMarstekUDPClient.test_broadcast ✓     3% ▍         
 tests/test_api.py::TestMarstekUDPClient.test_register_handler ✓3% ▍         
 tests/test_api.py::TestMarstekUDPClient.test_unregister_handler ✓4% ▍         
 tests/test_api.py::TestMarstekUDPClient.test_get_command_stats ✓4% ▌         
 tests/test_api.py::TestMarstekUDPClient.test_get_command_stats_not_found ✓5% ▌         
 tests/test_api.py::TestMarstekUDPClient.test_get_all_command_stats ✓5% ▌         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_init ✓5% ▌         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_value_function[sensor_type0] ✓6% ▋         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_value_function[sensor_type1] ✓6% ▋         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_value_function[sensor_type2] ✓7% ▋         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_value_function[sensor_type3] ✓7% ▊         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_with_empty_data[sensor_type0] ✓7% ▊         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_with_empty_data[sensor_type1] ✓8% ▊         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_with_empty_data[sensor_type2] ✓8% ▊         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_with_empty_data[sensor_type3] ✓9% ▉         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_availability[sensor_type0] ✓9% ▉         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_availability[sensor_type1] ✓9% ▉         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_availability[sensor_type2] ✓10% █         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_availability[sensor_type3] ✓10% █         
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_states[charging_enabled-data_path0-True-False] ✓11% █▏        
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_states[discharging_enabled-data_path1-True-False] ✓11% █▏        
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_states[bluetooth_connected-data_path2-True-False] ✓11% █▎        
 tests/test_binary_sensor.py::TestMarstekBinarySensor.test_binary_sensor_states[ct_connected-data_path3-True-False] ✓12% █▎        
 tests/test_button.py::TestMarstekModeButtons.test_init[MarstekAutoModeButton-Auto] ✓12% █▎        
 tests/test_button.py::TestMarstekModeButtons.test_init[MarstekAIModeButton-AI] ✓13% █▍        
 tests/test_button.py::TestMarstekModeButtons.test_init[MarstekManualModeButton-Manual] ✓13% █▍        
 tests/test_button.py::TestMarstekModeButtons.test_unique_id[MarstekAutoModeButton-Auto] ✓14% █▍        
 tests/test_button.py::TestMarstekModeButtons.test_unique_id[MarstekAIModeButton-AI] ✓14% █▌        
 tests/test_button.py::TestMarstekModeButtons.test_unique_id[MarstekManualModeButton-Manual] ✓14% █▌        
 tests/test_button.py::TestMarstekModeButtons.test_async_press_success[MarstekAutoModeButton-Auto] ✓15% █▌        
 tests/test_button.py::TestMarstekModeButtons.test_async_press_success[MarstekAIModeButton-AI] ✓15% █▌        
 tests/test_button.py::TestMarstekModeButtons.test_async_press_success[MarstekManualModeButton-Manual] ✓16% █▋        
 tests/test_button.py::TestMarstekModeButtons.test_async_press_failure[MarstekAutoModeButton-Auto] ✓16% █▋        
 tests/test_button.py::TestMarstekModeButtons.test_async_press_failure[MarstekAIModeButton-AI] ✓16% █▋        
 tests/test_button.py::TestMarstekModeButtons.test_async_press_failure[MarstekManualModeButton-Manual] ✓17% █▊        
 tests/test_button.py::TestMarstekModeButtonSpecific.test_auto_mode_button ✓17% █▊        
 tests/test_button.py::TestMarstekModeButtonSpecific.test_ai_mode_button ✓18% █▊        
 tests/test_button.py::TestMarstekModeButtonSpecific.test_manual_mode_button ✓18% █▊        
 tests/test_compatibility.py::TestCompatibilityMatrix.test_init ✓18% █▉        
 tests/test_compatibility.py::TestCompatibilityMatrix.test_scale_value ✓19% █▉        
 tests/test_compatibility.py::TestCompatibilityMatrix.test_scale_value_hw3 ✓19% █▉        
 tests/test_compatibility.py::TestCompatibilityMatrix.test_scale_value_not_found ✓20% ██        
 tests/test_compatibility.py::TestCompatibilityMatrix.test_get_info ✓20% ██        
 tests/test_coordinator.py::TestMarstekDataUpdateCoordinator.test_init ✓20% ██▏       
 tests/test_coordinator.py::TestMarstekDataUpdateCoordinator.test_async_update_data_success ✓21% ██▏       
 tests/test_coordinator.py::TestMarstekDataUpdateCoordinator.test_async_update_data_failure ✓21% ██▎       
 tests/test_coordinator.py::TestMarstekMultiDeviceCoordinator.test_init ✓22% ██▎       
 tests/test_coordinator.py::TestMarstekMultiDeviceCoordinator.test_get_device_macs ✓22% ██▎       
 tests/test_coordinator.py::TestMarstekMultiDeviceCoordinator.test_get_device_data ✓23% ██▍       
 tests/test_sensor.py::TestMarstekSensor.test_init ✓         23% ██▍       
 tests/test_sensor.py::TestMarstekSensor.test_unique_id ✓    23% ██▍       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type0] ✓24% ██▍       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type1] ✓24% ██▌       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type2] ✓25% ██▌       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type3] ✓25% ██▌       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type4] ✓25% ██▋       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type5] ✓26% ██▋       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type6] ✓26% ██▋       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type7] ✓27% ██▋       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type8] ✓27% ██▊       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type9] ✓27% ██▊       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type10] ✓28% ██▊       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type11] ✓28% ██▉       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type12] ✓29% ██▉       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type13] ✓29% ██▉       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type14] ✓30% ██▉       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type15] ✓30% ███       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type16] ✓30% ███       
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type17] ✓31% ███▏      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type18] ✓31% ███▎      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type19] ✓32% ███▎      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type20] ✓32% ███▎      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type21] ✓32% ███▎      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type22] ✓33% ███▍      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type23] ✓33% ███▍      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type24] ✓34% ███▍      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type25] ✓34% ███▌      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type26] ✓34% ███▌      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type27] ✓35% ███▌      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type28] ✓35% ███▌      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type29] ✓36% ███▋      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type30] ✓36% ███▋      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type31] ✓36% ███▋      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type32] ✓37% ███▊      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type33] ✓37% ███▊      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type34] ✓38% ███▊      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type35] ✓38% ███▊      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type36] ✓39% ███▉      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_value_function[sensor_type37] ✓39% ███▉      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type0] ✓39% ███▉      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type1] ✓40% ████      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type2] ✓40% ████      
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type3] ✓41% ████▏     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type4] ✓41% ████▏     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type5] ✓41% ████▎     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type6] ✓42% ████▎     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type7] ✓42% ████▎     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type8] ✓43% ████▍     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type9] ✓43% ████▍     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type10] ✓43% ████▍     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type11] ✓44% ████▍     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type12] ✓44% ████▌     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type13] ✓45% ████▌     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type14] ✓45% ████▌     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type15] ✓45% ████▋     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type16] ✓46% ████▋     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type17] ✓46% ████▋     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type18] ✓47% ████▋     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type19] ✓47% ████▊     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type20] ✓48% ████▊     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type21] ✓48% ████▊     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type22] ✓48% ████▉     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type23] ✓49% ████▉     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type24] ✓49% ████▉     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type25] ✓50% ████▉     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type26] ✓50% █████     
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type27] ✓50% █████▏    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type28] ✓51% █████▏    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type29] ✓51% █████▎    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type30] ✓52% █████▎    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type31] ✓52% █████▎    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type32] ✓52% █████▎    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type33] ✓53% █████▍    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type34] ✓53% █████▍    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type35] ✓54% █████▍    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type36] ✓54% █████▌    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_with_empty_data[sensor_type37] ✓55% █████▌    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type0] ✓55% █████▌    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type1] ✓55% █████▌    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type2] ✓56% █████▋    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type3] ✓56% █████▋    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type4] ✓57% █████▋    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type5] ✓57% █████▊    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type6] ✓57% █████▊    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type7] ✓58% █████▊    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type8] ✓58% █████▊    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type9] ✓59% █████▉    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type10] ✓59% █████▉    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type11] ✓59% █████▉    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type12] ✓60% ██████    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type13] ✓60% ██████    
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type14] ✓61% ██████▏   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type15] ✓61% ██████▏   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type16] ✓61% ██████▎   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type17] ✓62% ██████▎   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type18] ✓62% ██████▎   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type19] ✓63% ██████▍   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type20] ✓63% ██████▍   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type21] ✓64% ██████▍   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type22] ✓64% ██████▌   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type23] ✓64% ██████▌   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type24] ✓65% ██████▌   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type25] ✓65% ██████▌   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type26] ✓66% ██████▋   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type27] ✓66% ██████▋   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type28] ✓66% ██████▋   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type29] ✓67% ██████▊   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type30] ✓67% ██████▊   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type31] ✓68% ██████▊   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type32] ✓68% ██████▊   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type33] ✓68% ██████▉   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type34] ✓69% ██████▉   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type35] ✓69% ██████▉   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type36] ✓70% ███████   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_availability[sensor_type37] ✓70% ███████   
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type0] ✓70% ███████▏  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type1] ✓71% ███████▏  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type2] ✓71% ███████▎  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type3] ✓72% ███████▎  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type4] ✓72% ███████▎  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type5] ✓73% ███████▍  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type6] ✓73% ███████▍  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type7] ✓73% ███████▍  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type8] ✓74% ███████▍  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type9] ✓74% ███████▌  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type10] ✓75% ███████▌  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type11] ✓75% ███████▌  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type12] ✓75% ███████▋  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type13] ✓76% ███████▋  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type14] ✓76% ███████▋  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type15] ✓77% ███████▋  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type16] ✓77% ███████▊  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type17] ✓77% ███████▊  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type18] ✓78% ███████▊  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type19] ✓78% ███████▉  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type20] ✓79% ███████▉  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type21] ✓79% ███████▉  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type22] ✓80% ███████▉  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type23] ✓80% ████████  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type24] ✓80% ████████  
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type25] ✓81% ████████▏ 
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type26] ✓81% ████████▎ 
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type27] ✓82% ████████▎ 
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type28] ✓82% ████████▎ 
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type29] ✓82% ████████▎ 
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type30] ✓83% ████████▍ 
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type31] ✓83% ████████▍ 
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type32] ✓84% ████████▍ 
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type33] ✓84% ████████▌ 
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type34] ✓84% ████████▌ 
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type35] ✓85% ████████▌ 
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type36] ✓85% ████████▌ 
 tests/test_sensor.py::TestMarstekSensor.test_sensor_attributes[sensor_type37] ✓86% ████████▋ 
 tests/test_sensor.py::TestPVSensors.test_pv_sensor_value_function[sensor_type0] ✓86% ████████▋ 
 tests/test_sensor.py::TestPVSensors.test_pv_sensor_value_function[sensor_type1] ✓86% ████████▋ 
 tests/test_sensor.py::TestPVSensors.test_pv_sensor_value_function[sensor_type2] ✓87% ████████▊ 
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type0] ✓87% ████████▊ 
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type1] ✓88% ████████▊ 
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type2] ✓88% ████████▊ 
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type3] ✓89% ████████▉ 
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type4] ✓89% ████████▉ 
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type5] ✓89% ████████▉ 
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type6] ✓90% █████████ 
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type7] ✓90% █████████ 
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type8] ✓91% █████████▏
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type9] ✓91% █████████▏
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type10] ✓91% █████████▎
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type11] ✓92% █████████▎
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type12] ✓92% █████████▎
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type13] ✓93% █████████▍
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_value_function[sensor_type14] ✓93% █████████▍
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type0] ✓93% █████████▍
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type1] ✓94% █████████▍
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type2] ✓94% █████████▌
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type3] ✓95% █████████▌
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type4] ✓95% █████████▌
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type5] ✓95% █████████▋
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type6] ✓96% █████████▋
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type7] ✓96% █████████▋
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type8] ✓97% █████████▋
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type9] ✓97% █████████▊
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type10] ✓98% █████████▊
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type11] ✓98% █████████▊
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type12] ✓98% █████████▉
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type13] ✓99% █████████▉
 tests/test_sensor.py::TestAggregateSensors.test_aggregate_sensor_availability[sensor_type14] ✓99% █████████▉
 tests/test_sensor.py::TestSensorEdgeCases.test_sensor_with_none_value_function ✓99% █████████▉
 tests/test_sensor.py::TestSensorEdgeCases.test_sensor_with_custom_available_fn ✓100% ██████████

Results (19.67s):
     244 passed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant