2016-02-28 126 views
-3

好的,所以我相信我错过了一些非常明显的东西,但我一直在尝试很长时间来找出一种方法,每个人都试图帮助我,只是告诉我,我几乎得到了它设置了正确的一切工作,但它不会不管我考什么,我一直在经历了那么多,但最有前途的,现在是单元测试的加密代码

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()  

我需要弄清楚如何让单元测试正常工作。我有一个输入是加密(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蟒蛇也许应该补充一点,我使用翼IDE帮助我通过内置的异常检查器发现错误,以帮助我发现错误以防万一。

+0

...你有一个真正的*问题*? – jonrsharpe

+0

是的,我该如何做一个单元测试,这个混乱的东西,因为它基本上是什么。编辑:是的,混乱有点不对。基本上我只需要一个加密单元测试(x) – HopelessNoobInPython

+0

*“我如何做一个单元测试可以解决那些混乱的问题”*对于SO来说不是一个合适的问题,它既不是代码编写也不是教程服务。请参加[游览]并阅读[问]。作为初学者,请注意,模拟被测函数*甚至不会调用*的函数是毫无意义的。 *“至少没有错误”* - 我可以在您发布的测试代码中看到几个错误,所以如果您没有看到任何回溯,则不得实际运行它。 – jonrsharpe

回答

0

也许你只需要

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

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