Я хотел бы создать модульное тестирование для метода filename_to_txt:Как сделать модульные тесты для методов в сложном классе в python?
class some_panel(wx.Panel):
def __init__(self,parent,Some_class,some_handler,Some_Event):
wx.Panel.__init__(self,parent=parent)
self.parent = parent
self.some_handler = some_handler
self.some_Event = Some_Event
self.some_another_class = Some_class
def filename_to_txt(self,input_filename):
splitted = input_filename.split(".raw")
txt_filename = splitted[0] + splitted[1] + ".txt"
return txt_filename
Как я должен написать модульное тестирование для этого метода?
Это статический метод в каком-то классе, но для проверки того, что во-первых я должен сделать и экземпляр класса Some_panel.
Должен ли я предоставить все аргументы для метода __init__ класса Some_panel? Есть ли другой лучший подход, для которого мне не нужно создавать экземпляр этого класса Some_panel для тестирования метода filename_to_txt.
import unittest
from some_file import Some_panel
class TestSomething(unittest.TestCase):
def testname(self):
some_panel = Some_panel(????)
testfilename = "TestFilename.raw.001"
result = some_panel.filename_to_txt(input_filename = testfilename)
self.assertEqual(result, "TestFilename.001.txt", "Something is wrong")
Спасибо за ответ! Но что, если я не могу изменить источник? Является ли этот правильный подход для создания нового класса, который наследует класс Some_panel и переопределяет метод __init__ только для прохождения? – user3537005
Если вы не можете изменить источник, то вызовы 'some_panel.filename_to-text' потребуют экземпляр' some_panel') или его подкласса) в качестве первого аргумента, поэтому у вас нет опции, кроме как создать экземпляр, а затем вызовите метод. Подкласс будет наследовать '__init __()', если он не определяет его собственный. Если это так, то нужно будет явно вызвать 'some_panel .__ init __()', предпочтительно используя 'super' – holdenweb