加密代码的单元测试

时间:2016-02-28 23:35:15

标签: python unit-testing 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')

我从python mocking raw input in unittests偷了这个,我根本不明白它是如何运作的......

我要测试的代码是

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正常工作。我有一个加密(x)的输入,这是在另一种方法中调用。需要此输入而无需调用其他方法来使用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帮助我发现其内置的异常检查错误,以帮助我发现错误,以防万一。

1 个答案:

答案 0 :(得分:0)

也许你只需要

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

encryption()返回一个字符串而不是整数。