I'm using a third party python library, that is using ctypes (it uses a dll). I'm not very familiar with ctypes. The lib offers a type definition and a structure definition as given in the minimum example below. I'm trying to assign the member variable myClassInst.MSGTYPE the value of the constant MYConst. Afterwards I want to check the value with the unittest assertion macro but check fails due to different types. The different types are shown in the output below, too.
I do not understand, why the types differ? What's the correct way to write that piece of code? I'm quite new to Python, so thank you in advance for your support
from ctypes import *
import unittest
MyType = c_ubyte
MYConst = MyType(0xED)
class MyClass (Structure):
_fields_ = [ ("MSGTYPE", MyType) ]
class myTest(unittest.TestCase):
def test(self):
myClassInst = MyClass()
myClassInst.MSGTYPE = MYConst
print(type(MYConst))
print(type(myClassInst.MSGTYPE))
self.assertEqual(MYConst, myClassInst.MSGTYPE)
if __name__ == '__main__':
unittest.main()
The output is:
<class 'ctypes.c_ubyte'>
<class 'int'>
F
======================================================================
FAIL: test (__main__.myTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "mimimumexample.py", line 16, in test
self.assertEqual(MYConst, myClassInst.MSGTYPE)
AssertionError: c_ubyte(237) != 237
----------------------------------------------------------------------
Ran 1 test in 0.002s
FAILED (failures=1)