Python 泡菜泡菜有时会失败

Python 泡菜泡菜有时会失败,python,python-3.x,openssl,Python,Python 3.x,Openssl,如果我使用多次运行以下测试用例: python3 -m unittest test_pyelliptic.py 大约15分之一的跑步失败 测试用例: import unittest, pyelliptic, pickle class PyellipticTestCase(unittest.TestCase): def setUp(self): self.alice = pyelliptic.ECC() self.bob = pyelliptic.ECC

如果我使用多次运行以下测试用例:

python3 -m unittest test_pyelliptic.py
大约15分之一的跑步失败

测试用例:

import unittest, pyelliptic, pickle

class PyellipticTestCase(unittest.TestCase):
    def setUp(self):
        self.alice = pyelliptic.ECC()
        self.bob = pyelliptic.ECC()

    def test_pickleSign(self):
        tm = {"text":"contract","amount":12}
        tms1 = {"doc":tm,"c1":self.bob.get_pubkey(),"s1":self.bob.sign(pickle.dumps(tm))}
        tms2bb = {"doc":tms1,"c2":self.alice.get_pubkey(),"s2":self.alice.sign(pickle.dumps(tms1))}
        tms2 = pickle.loads(pickle.dumps(tms2bb))
        self.assertEqual(tms2['s2'],tms2bb['s2'])
        self.assertTrue(pyelliptic.ECC(pubkey=self.alice.get_pubkey()).verify(tms2bb['s2'],pickle.dumps(tms2['doc']))) #<--- FAILs sometimes
import unittest、py、pickle
类PyellipticTestCase(unittest.TestCase):
def设置(自):
self.alice=py椭圆曲线
self.bob=py椭圆曲线
def测试信号(自身):
tm={“文本”:“合同”,“金额”:12}
tms1={“doc”:tm,“c1”:self.bob.get_pubkey(),“s1”:self.bob.sign(pickle.dumps(tm))}
tms2bb={“doc”:tms1,“c2”:self.alice.get_pubkey(),“s2”:self.alice.sign(pickle.dumps(tms1))}
tms2=pickle.load(pickle.dumps(tms2bb))
self.assertEqual(tms2['s2'],tms2bb['s2']))

self.assertTrue(pyeclical.ECC(pubkey=self.alice.get_pubkey()).verify(tms2bb['s2'],pickle.dumps(tms2['doc'])))#经过进一步研究,发现二进制pickle输出取决于字典中元素的顺序。 因此,以下测试用例在比较二进制数组时失败:

def test_pickleOrder(self):
        d1 = {"test1":12,"test2":14.2,"test3":"test"}
        d2 = {"test3":"test","test1":12,"test2":14.2}       
        self.assertEqual(d1,d2)     
        d1p = pickle.dumps(d1)
        d2p = pickle.dumps(d2)      
        self.assertEqual(d1p,d2p) #<--- fails here
def测试顺序(自):
d1={“test1”:12,“test2”:14.2,“test3”:“test”}
d2={“test3”:“test”,“test1”:12,“test2”:14.2}
自我评估资格(d1、d2)
d1p=酸洗倾倒(d1)
d2p=酸洗转储(d2)
self.assertEqual(d1p、d2p)#
def test_pickleOrder(self):
        d1 = {"test1":12,"test2":14.2,"test3":"test"}
        d2 = {"test3":"test","test1":12,"test2":14.2}       
        self.assertEqual(d1,d2)     
        d1p = pickle.dumps(d1)
        d2p = pickle.dumps(d2)      
        self.assertEqual(d1p,d2p) #<--- fails here