好的,所以我相信我错过了一些非常明显的东西,但是我已经尝试了很长一段时间来找到一种方法,每个试图帮助我的人只是告诉我,我几乎已经正确设置了它一切都可以工作,但不管我尝试什么测试都没有,我已经经历了这么多但现在最有希望的是
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帮助我发现其内置的异常检查错误,以帮助我发现错误,以防万一。
答案 0 :(得分:0)
也许你只需要
self.assertEquals(encryption('x'), "78")
encryption()
返回一个字符串而不是整数。