Python 加密代码的单元测试

Python 加密代码的单元测试,python,unit-testing,encryption,Python,Unit Testing,Encryption,好的,所以我相信我错过了一些非常明显的东西,但我一直在努力寻找一种方法,所有试图帮助我的人都告诉我,我几乎把它设置好了,一切正常,但无论我尝试什么测试,我都经历了很多,但现在最有希望的是 import unittest from unittest import TestCase from mock import patch from encrdecrprog import encryption class teststuff(TestCase): def test_encryption(

好的,所以我相信我错过了一些非常明显的东西,但我一直在努力寻找一种方法,所有试图帮助我的人都告诉我,我几乎把它设置好了,一切正常,但无论我尝试什么测试,我都经历了很多,但现在最有希望的是

import unittest
from unittest import TestCase
from mock import patch
from encrdecrprog import encryption
class teststuff(TestCase):
    def test_encryption(self):
        with patch('__bulletin__.raw_input', return_value = 'x') as raw_input:
            self.assertEqual(encryption(x), '78')
            _raw_input.assert_called_once_with('x')
我偷了这个我只是不明白它是怎么工作的

我想测试的代码是

def enprint():

    print(encryption(raw_input()))
def encryption(x):

    pur = ("".join("{:02x}".format(ord(c)) for c in x)) 
    #The code for this was shamelessly stolen from https://stackoverflow.com/questions/12214801/print-a-string-as-hex-bytes

    return pur
def main():
    userinput = raw_input()    
    if userinput == "1":
        enprint()    
我需要弄清楚如何让unittest正常工作。我有一个输入是encryptionx,它在另一个方法中调用。无需调用另一个方法就可以使用unittest对输入进行测试。我需要测试输出是否等于我之前已经计算出的x=78,所以我尽可能清楚地把这段代码散列出来,英语不是我的第一语言,抱歉,如果它不好的话

以下是最新的尝试:

    import unittest
from encrdecrprog import encryption

class TestStringMethods(unittest.TestCase):
        def setup(self):
                pass
        def test_encryption(self):
                self.assertEquals(encryption('x'), 78)
                print self.test_encryption

if __name__ == '__main__':
        unittest.main()
另外,我期望的是一个测试,检查x是否真的等于78。 编辑:要添加,我正在使用2.7 python,可能应该添加我使用wing ide通过其内置的异常检查器来帮助我发现错误,以防有问题。

也许您需要

self.assertEquals(encryption('x'), "78")

加密返回的是字符串而不是整数。

…你有实际问题吗?是的,我实际上如何利用这些杂乱无章的东西进行单元测试,因为基本上就是这样。编辑:是的,jumble有点不对。基本上,我只需要一个加密之外的单元测试。我如何实际制作一个从这些杂乱无章的东西中工作的单元测试对于SO来说不是一个合适的问题,这既不是代码编写,也不是教程服务。请拿着这本书读一读。作为初学者,请注意,模拟一个被测试函数甚至都不调用的函数是毫无意义的。至少没有错误-我可以在你发布的测试代码中看到几个错误,所以如果你没有看到任何回溯,你一定没有实际运行它。它消失了吗?我可能单击错误,我需要弄清楚如何在.join{:02x}.formatordc中输入x作为x,它应该转换为78,并且我需要运行单元测试,我认为self.assertEqualencryption=78是错误的,但基本上我需要找到一种方法来解决这些问题。编辑:顺便说一句,我在代码的另一部分中有一个原始输入,可以解决这个问题,代码本身可以编辑问题,给出一个更好的问题描述。否则,你就是在浪费大家的时间。