В моем текущем проекте у меня есть 500 тестовых файлов (инфраструктура UnitTest).Мы решили изменить их с использования setUpClass / tearDownClass на setUpModule / tearDownModule.они выглядят так:
from tests.basetestcase import BaseTestCase
from tests.state_reproductor import StateReproductor
import os
import time
class Testopen(BaseTestCase):
PRND_PATH = "PRND"
@classmethod
def setUpClass(cls):
cls.reproduceState()
super().setUpConnection()
cls.waitForNode(cls.PRND_PATH, 3)
@classmethod
def tearDownClass(cls):
cls.reproductor.restore_all_modified_values()
@classmethod
def reproduceState(cls):
cls.reproductor = StateReproductor()
cls.reproductor.process_include("startupSequence")
cls.reproductor.process_include("startupState_01")
cls.reproductor.send_signal("Status","SCORES")
cls.reproductor.process_include("start")
def test_template(self):
pass
и тому подобное
from tests.basetestcase import BaseTestCase
from tests.state_reproductor import StateReproductor
import os
import time
import unittest
reproductor = None
def setUpModule():
global reproductor
reproductor = StateReproductor()
reproductor.process_include("startupSequence")
reproductor.process_include("startupState_01")
reproductor.send_signal("Status","SCORES")
reproductor.process_include("startETM")
def teartDownModule():
global reproductor
del reproductor
reproductor = None
@unittest.skipIf(BaseTestCase.ACTIVE==False, 'Not active')
class Testopen_ETM(BaseTestCase):
PRND_PATH = "PRND"
@classmethod
def setUpClass(cls):
super().setUpTecoConnection()
cls.waitForNode(cls.PRND_PATH, 3)
@classmethod
def tearDownClass(cls):
global reproductor
reproductor.restore_all_modified_values()
def test_template(self):
pass
Пока что я просто читаю каждый файл в память построчно, определяю начало своих функций и изменяю.Или скопируйте его содержимое, чтобы добавить его в другое место во время второго анализа.
Я нахожу это скучным и грубым, а не красивым / красивым.AWK или другие консольные инструменты столкнутся с подобной проблемой (построчный анализ).
Python.AST МОЖЕТ быть инструментом для такого рода работы.
Что вы предлагаете использовать для выполненияэто преобразование?