diff --git a/scapy/contrib/modbus.uts b/scapy/contrib/modbus.uts
index 3e214717154ffdba412e72d0ac4d60fdec0de878..303cd285a9fd5dabe2b27c7d973d4bd8f1b17409 100644
--- a/scapy/contrib/modbus.uts
+++ b/scapy/contrib/modbus.uts
@@ -13,33 +13,33 @@ str(ModbusADURequest() / '\x00\x01\x02') == '\x00\x00\x00\x00\x00\x04\xff\x00\x0
 
 = MBAP Guess Payload ModbusPDU01ReadCoilsRequest (simple case)
 p = ModbusADURequest('\x00\x00\x00\x00\x00\x06\xff\x01\x00\x00\x00\x01')
-p.payload.__class__.__name__ == 'ModbusPDU01ReadCoilsRequest'
+assert(isinstance(p.payload, ModbusPDU01ReadCoilsRequest))
 = MBAP Guess Payload ModbusPDU01ReadCoilsResponse
 p = ModbusADUResponse('\x00\x00\x00\x00\x00\x04\xff\x01\x01\x01')
-p.payload.__class__.__name__ == 'ModbusPDU01ReadCoilsResponse'
+assert(isinstance(p.payload, ModbusPDU01ReadCoilsResponse))
 = MBAP Guess Payload ModbusPDU01ReadCoilsError
 p = ModbusADUResponse('\x00\x00\x00\x00\x00\x03\xff\x81\x02')
-p.payload.__class__.__name__ == 'ModbusPDU01ReadCoilsError'
+assert(isinstance(p.payload, ModbusPDU01ReadCoilsError))
 
 = MBAP Guess Payload ModbusPDU2B0EReadDeviceIdentificationRequest (2 level test)
 p = ModbusADURequest('\x00\x00\x00\x00\x00\x04\xff+\x0e\x01\x00')
-p.payload.__class__.__name__ == 'ModbusPDU2B0EReadDeviceIdentificationRequest'
+assert(isinstance(p.payload, ModbusPDU2B0EReadDeviceIdentificationRequest))
 = MBAP Guess Payload ModbusPDU2B0EReadDeviceIdentificationResponse
 p = ModbusADUResponse('\x00\x00\x00\x00\x00\x1b\xff+\x0e\x01\x83\x00\x00\x03\x00\x08Pymodbus\x01\x02PM\x02\x031.0')
-p.payload.__class__.__name__ == 'ModbusPDU2B0EReadDeviceIdentificationResponse'
+assert(isinstance(p.payload, ModbusPDU2B0EReadDeviceIdentificationResponse))
 = MBAP Guess Payload ModbusPDU2B0EReadDeviceIdentificationError
 p = ModbusADUResponse('\x00\x00\x00\x00\x00\x03\xff\xab\x01')
-p.payload.__class__.__name__ == 'ModbusPDU2B0EReadDeviceIdentificationError'
+assert(isinstance(p.payload, ModbusPDU2B0EReadDeviceIdentificationError))
 
 = MBAP Guess Payload (Invalid payload)
 p = ModbusADURequest('\x00\x00\x00\x00\x00\x03\xff\xff\xff')
-p.payload.__class__.__name__ == 'ModbusPDU00GenericRequest'
+assert(isinstance(p.payload, ModbusPDU00GenericRequest))
 = MBAP Guess Payload ModbusPDU02ReadDiscreteInputsResponse
 p = ModbusADUResponse('\x00\x00\x00\x00\x00\x04\xff\x80\xff\x00')
-p.payload.__class__.__name__ == 'ModbusPDU00GenericResponse'
+assert(isinstance(p.payload, ModbusPDU00GenericResponse))
 = MBAP Guess Payload ModbusPDU02ReadDiscreteInputsError
 p = ModbusADUResponse('\x00\x00\x00\x00\x00\x04\xff\xff\xff\xff')
-p.payload.__class__.__name__ == 'ModbusPDU00GenericError'
+assert(isinstance(p.payload, ModbusPDU00GenericError))
 
 
 + Test layer binding
@@ -60,7 +60,8 @@ str(ModbusPDU01ReadCoilsRequest()) == '\x01\x00\x00\x00\x01'
 str(ModbusPDU01ReadCoilsRequest(startAddr=16, quantity=2)) == '\x01\x00\x10\x00\x02'
 = ModbusPDU01ReadCoilsRequest dissection
 p = ModbusPDU01ReadCoilsRequest('\x01\x00\x10\x00\x02')
-p.startAddr == 16 and p.quantity == 2
+assert(p.startAddr == 16)
+assert(p.quantity == 2)
 
 = ModbusPDU01ReadCoilsResponse
 str(ModbusPDU01ReadCoilsResponse()) == '\x01\x01\x00'
@@ -68,7 +69,8 @@ str(ModbusPDU01ReadCoilsResponse()) == '\x01\x01\x00'
 str(ModbusPDU01ReadCoilsResponse(coilStatus=[0x10]*3)) == '\x01\x03\x10\x10\x10'
 = ModbusPDU01ReadCoilsResponse dissection
 p = ModbusPDU01ReadCoilsResponse('\x01\x03\x10\x10\x10')
-p.coilStatus == [16, 16, 16] and p.byteCount == 3
+assert(p.coilStatus == [16, 16, 16])
+assert(p.byteCount == 3)
 
 = ModbusPDU01ReadCoilsError
 str(ModbusPDU01ReadCoilsError() == '\x81\x01')
@@ -76,7 +78,8 @@ str(ModbusPDU01ReadCoilsError() == '\x81\x01')
 str(ModbusPDU01ReadCoilsError(exceptCode=2)) == '\x81\x02'
 = ModbusPDU81ReadCoilsError dissection
 p = ModbusPDU01ReadCoilsError('\x81\x02')
-p.funcCode == 0x81 and p.exceptCode == 2
+assert(p.funcCode == 0x81)
+assert(p.exceptCode == 2)
 
 # 0x02/0x82 Read Discrete Inputs Registers ------------------------------------------
 = ModbusPDU02ReadDiscreteInputsRequest
@@ -90,7 +93,8 @@ str(ModbusPDU02ReadDiscreteInputsResponse()) == '\x02\x01\x00'
 str(ModbusPDU02ReadDiscreteInputsResponse(inputStatus=[0x02, 0x01])) == '\x02\x02\x02\x01'
 = ModbusPDU02ReadDiscreteInputsRequest dissection
 p = ModbusPDU02ReadDiscreteInputsResponse('\x02\x02\x02\x01')
-p.byteCount == 2 and p.inputStatus == [0x02, 0x01]
+assert(p.byteCount == 2)
+assert(p.inputStatus == [0x02, 0x01])
 
 = ModbusPDU02ReadDiscreteInputsError
 str(ModbusPDU02ReadDiscreteInputsError()) == '\x82\x01'
@@ -107,7 +111,8 @@ str(ModbusPDU03ReadHoldingRegistersResponse()) == '\x03\x02\x00\x00'
 1==1
 = ModbusPDU03ReadHoldingRegistersResponse dissection
 p = ModbusPDU03ReadHoldingRegistersResponse('\x03\x06\x02+\x00\x00\x00d')
-p.byteCount == 6 and p.registerVal == [555, 0, 100]
+assert(p.byteCount == 6)
+assert(p.registerVal == [555, 0, 100])
 
 = ModbusPDU03ReadHoldingRegistersError
 str(ModbusPDU03ReadHoldingRegistersError()) == '\x83\x01'
@@ -182,13 +187,15 @@ str(ModbusPDU14ReadFileRecordRequest()/ModbusReadFileSubRequest()/ModbusReadFile
 str(ModbusPDU14ReadFileRecordRequest()/ModbusReadFileSubRequest(fileNumber=4, recordNumber=1, recordLength=02)/ModbusReadFileSubRequest(fileNumber=3, recordNumber=9, recordLength=2)) == '\x14\x0e\x06\x00\x04\x00\x01\x00\x02\x06\x00\x03\x00\t\x00\x02'
 = ModbusPDU14ReadFileRecordRequest dissection
 p = ModbusPDU14ReadFileRecordRequest('\x14\x0e\x06\x00\x04\x00\x01\x00\x02\x06\x00\x03\x00\t\x00\x02')
-p.payload.__class__.__name__ == 'ModbusReadFileSubRequest' and p.payload.payload.__class__.__name__ == 'ModbusReadFileSubRequest'
+assert(isinstance(p.payload, ModbusReadFileSubRequest))
+assert(isinstance(p.payload.payload, ModbusReadFileSubRequest))
 
 = ModbusPDU14ReadFileRecordResponse minimal parameters
 str(ModbusPDU14ReadFileRecordResponse()/ModbusReadFileSubResponse(recData=[0x0dfe, 0x0020])/ModbusReadFileSubResponse(recData=[0x33cd, 0x0040])) == '\x14\x0c\x05\x06\r\xfe\x00 \x05\x063\xcd\x00@'
 = ModbusPDU14ReadFileRecordResponse dissection
 p = ModbusPDU14ReadFileRecordResponse('\x14\x0c\x05\x06\r\xfe\x00 \x05\x063\xcd\x00@')
-p.payload.__class__.__name__ == 'ModbusReadFileSubResponse' and p.payload.payload.__class__.__name__ == 'ModbusReadFileSubResponse'
+assert(isinstance(p.payload, ModbusReadFileSubResponse))
+assert(isinstance(p.payload.payload, ModbusReadFileSubResponse))
 
 = ModbusPDU14ReadFileRecordError
 str(ModbusPDU14ReadFileRecordError()) == '\x94\x01'
@@ -198,13 +205,15 @@ str(ModbusPDU14ReadFileRecordError()) == '\x94\x01'
 str(ModbusPDU15WriteFileRecordRequest()/ModbusWriteFileSubRequest(fileNumber=4, recordNumber=07, recordData=[0x06af, 0x04be, 0x100d])) == '\x15\r\x06\x00\x04\x00\x07\x00\x03\x06\xaf\x04\xbe\x10\r'
 = ModbusPDU15WriteFileRecordRequest dissection
 p = ModbusPDU15WriteFileRecordRequest('\x15\x0d\x06\x00\x04\x00\x07\x00\x03\x06\xaf\x04\xbe\x10\r')
-p.payload.__class__.__name__ == 'ModbusWriteFileSubRequest' and p.payload.recordLength == 3
+assert(isinstance(p.payload, ModbusWriteFileSubRequest))
+assert(p.payload.recordLength == 3)
 
 = ModbusPDU15WriteFileRecordResponse minimal parameters
 str(ModbusPDU15WriteFileRecordResponse()/ModbusWriteFileSubResponse(fileNumber=4, recordNumber=07, recordData=[0x06af, 0x04be, 0x100d])) == '\x15\r\x06\x00\x04\x00\x07\x00\x03\x06\xaf\x04\xbe\x10\r'
 = ModbusPDU15WriteFileRecordResponse dissection
 p = ModbusPDU15WriteFileRecordResponse('\x15\x0d\x06\x00\x04\x00\x07\x00\x03\x06\xaf\x04\xbe\x10\r')
-p.payload.__class__.__name__ == 'ModbusWriteFileSubResponse' and p.payload.recordLength == 3
+assert(isinstance(p.payload, ModbusWriteFileSubResponse))
+assert(p.payload.recordLength == 3)
 
 = ModbusPDU15WriteFileRecordError
 str(ModbusPDU15WriteFileRecordError()) == '\x95\x01'
@@ -226,7 +235,8 @@ str(ModbusPDU17ReadWriteMultipleRegistersRequest()) == '\x17\x00\x00\x00\x01\x00
 str(ModbusPDU17ReadWriteMultipleRegistersRequest(writeRegistersValue=[0x0001, 0x0002])) == '\x17\x00\x00\x00\x01\x00\x00\x00\x02\x04\x00\x01\x00\x02'
 = ModbusPDU17ReadWriteMultipleRegistersRequest dissection
 p = ModbusPDU17ReadWriteMultipleRegistersRequest('\x17\x00\x00\x00\x01\x00\x00\x00\x02\x04\x00\x01\x00\x02')
-p.byteCount == 4 and p.writeQuantityRegisters == 2
+assert(p.byteCount == 4)
+assert(p.writeQuantityRegisters == 2)
 
 = ModbusPDU17ReadWriteMultipleRegistersResponse
 str(ModbusPDU17ReadWriteMultipleRegistersResponse()) == '\x17\x02\x00\x00'
@@ -249,7 +259,8 @@ str(ModbusPDU18ReadFIFOQueueResponse()) == '\x18\x00\x02\x00\x00'
 str(ModbusPDU18ReadFIFOQueueResponse(FIFOVal=[0x0001, 0x0002, 0x0003])) == '\x18\x00\x08\x00\x03\x00\x01\x00\x02\x00\x03'
 = ModbusPDU18ReadFIFOQueueResponse dissection
 p = ModbusPDU18ReadFIFOQueueResponse('\x18\x00\x08\x00\x03\x00\x01\x00\x02\x00\x03')
-p.byteCount == 8 and p.FIFOCount == 3
+assert(p.byteCount == 8)
+assert(p.FIFOCount == 3)
 
 = ModbusPDU18ReadFIFOQueueError
 str(ModbusPDU18ReadFIFOQueueError()) == '\x98\x01'
@@ -265,8 +276,9 @@ str(ModbusPDU2B0EReadDeviceIdentificationRequest()) =='+\x0e\x01\x00'
 str(ModbusPDU2B0EReadDeviceIdentificationResponse()) == '+\x0e\x04\x01\x00\x00\x00'
 = ModbusPDU2B0EReadDeviceIdentificationResponse dissection
 p = ModbusPDU2B0EReadDeviceIdentificationResponse('+\x0e\x01\x83\x00\x00\x03\x00\x08Pymodbus\x01\x02PM\x02\x031.0')
-p.payload.payload.payload.id == 2 and  p.payload.payload.id == 1 and p.payload.id == 0
+assert(p.payload.payload.payload.id == 2)
+assert(p.payload.payload.id == 1)
+assert(p.payload.id == 0)
 
 = ModbusPDU2B0EReadDeviceIdentificationError
 str(ModbusPDU2B0EReadDeviceIdentificationError()) == '\xab\x01'
-