转换Python文件结构

时间:2019-01-30 14:28:11

标签: python unit-testing


在我当前的项目中,我有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 MAY似乎是用于这种工作的工具。

您打算使用什么来执行此转换?

0 个答案:

没有答案