Refactor & add unittests for almost all functionality, add tox for running tests on py27 and py35 (#17)

* Refactor & add unittests for almost all functionality, add tox for running tests on py27 and py35

This commit adds unit tests for current api functionality.
- currently no mocking, all tests are run on the device.
- the library is now compatible with python 2.7 and python 3.5, use tox for tests
- schema checks are done with voluptuous

refactoring:
- protocol is separated into its own file, smartplug adapted to receive protocol worker as parameter.
- cleaned up the initialization routine, initialization is done on use, not on creation of smartplug
- added model and features properties, identity kept for backwards compatibility
- no more storing of local variables outside _sys_info, paves a way to handle state changes sanely (without complete reinitialization)

* Fix CI warnings, remove unused leftover code

* Rename _initialize to _fetch_sysinfo, as that's what it does.

* examples.cli: fix identify call, prettyprint sysinfo, update readme which had false format for led setting

* Add tox-travis for automated testing.
This commit is contained in:
Teemu R
2016-12-16 23:51:56 +01:00
committed by GadgetReactor
parent 45fc354888
commit fd4e363f56
9 changed files with 439 additions and 129 deletions

View File

@@ -1,5 +1,6 @@
import sys
import logging
from pprint import pformat as pf
from pyHS100 import SmartPlug
@@ -11,8 +12,8 @@ if len(sys.argv) < 2:
hs = SmartPlug(sys.argv[1])
logging.info("Identify: %s", hs.identify)
logging.info("Sysinfo: %s", hs.get_sysinfo())
logging.info("Identify: %s", hs.identify())
logging.info("Sysinfo: %s", pf(hs.get_sysinfo()))
has_emeter = hs.has_emeter
if has_emeter:
logging.info("== Emeter ==")