2016-02-28 3 views
-3

Итак, я верю, что у меня что-то действительно неясно, но я долго пытаюсь найти способ, и все, кто пытался помочь мне, просто скажите, что я в значительной степени получил он правильно настроен на все, чтобы работать, но это не не независимо от того, какой тест я стараюсь, я был через так много, но наиболее перспективным в настоящее время являетсяUnittest кода шифрования

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 я просто не» t понять, как это работает, на всех ...

Код, который я хочу проверить

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

Кроме того, что я ожидал это тест, который проверяет погода х действительно равна 78. EDIT: добавить я использую 2.7 питона, вероятно, следует добавить, что я использовать крыло чтобы помочь мне выявить ошибки с помощью встроенного контролера исключений, чтобы помочь мне определить, что не так, на случай, если это имеет значение.

+0

... есть ли у вас фактический вопрос *? – jonrsharpe

+0

Да, как я на самом деле делаю unittest, который работает из этого беспорядка, потому что это в основном то, что есть. Редактировать: Да, беспорядок - это немного неправильно. В основном мне нужен только unittest из-за шифрования (x) – HopelessNoobInPython

+0

* «Как я могу сделать unittest, который работает из этого беспорядка»? Это не подходящий вопрос для SO, который не является ни кодовым письмом, ни учебной службой , Пожалуйста, примите [тур] и прочитайте [ask]. Обратите внимание, что бессмысленно издеваться над функцией, которую функция под тестированием * даже не вызывает *. * «по крайней мере, нет ошибок». * - Я вижу несколько ошибок в вашем тестовом тестовом коде, поэтому, если вы не видите трассировку, вы фактически не должны ее запускать. – jonrsharpe

ответ

0

Может быть, вам нужно просто

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

encryption() возвращают строку, а не целое число.

Смежные вопросы