import unittest from test.helpers.amper import Amper class Qamper(unittest.TestCase): params = None __resultlist = None # resultlist is a python list of python dictionaries # varlist: undercurrent, overcurrent def __init__(self, testname, testfunc, varlist): self.params = varlist super(Qamper, self).__init__(testfunc) if "undercurrent" in varlist: self._undercurrent = varlist["undercurrent"] else: raise Exception('undercurrent param inside Qamp must be defined') if "overcurrent" in varlist: self._overcurrent = varlist["overcurrent"] else: raise Exception('overcurrent param inside Qamp must be defined') self._testMethodDoc = testname self.__resultlist = [] def execute(self): amp = Amper() # open serial connection if not amp.open(): self.__resultlist.append( { "desc": "Test result", "data": "FAILED: can not open a serial port", "type": "string" } ) self.fail("Error: can not open a serial port") # check if the amperimeter is connected and working # 2 ATTEMTS if not amp.hello(): if not amp.hello(): self.__resultlist.append( { "desc": "Test result", "data": "FAILED: can not communicate with the amperimeter", "type": "string" } ) self.fail("Error: can not communicate") # get current value (in Amperes) current = amp.getCurrent() # close serial connection amp.close() # Check current range if float(current) > float(self._overcurrent): # Overcurrent detected self.__resultlist.append( { "desc": "Test result", "data": "FAILED: Overcurrent detected ( {} A)".format(current), "type": "string" } ) self.fail("failed: Overcurrent detected ( {} )".format(current)) elif float(current) < float(self._undercurrent): # Undercurrent detected self.__resultlist.append( { "desc": "Test result", "data": "FAILED: Undercurrent detected ( {} A)".format(current), "type": "string" } ) self.fail("failed: Undercurrent detected ( {} )".format(current)) # Test successful self.__resultlist.append( { "desc": "Test result", "data": "OK: Current {} A".format(current), "type": "string" } ) def getresults(self): return self.__resultlist