python - 实现我自己的高级测试脚本语言

标签 python parsing

我继承了一堆看起来像这样的测试脚本:

// make connection on standard port (FD)
ot 11 02 00 0F FD
// wait for ACK
in 12 ackValue
// wait for connection confirmation
in 13 ackValue 09 88
//send 5 bytes of arbitary data
ot 21 ackValue 05 01 02 03 04 05

等等。

我想编写我自己的更简单的测试脚本,它在上面的一层之上并且可以被解析以自动生成上面的脚本,这样我的脚本看起来像这样:

MAKE_STANDARD_CONNECTION
SEND_DATA (01,02,03,04,05)

因此,当解析 MAKE_STANDARD_CONNECTION 时,它将生成前一个脚本中的前六行。如果标准端口应从 0xFD 更改为其他内容,这将允许我快速更新所有脚本...

我猜有一些工具可用于执行此操作,但它们是什么?我是一名程序员,因此如果需要,我可以编写代码,而 python 是我选择的语言。

谢谢你的帮助,

巴里

最佳答案

对于这种简单的测试,您不需要任何特殊的解析器。只需使用 Python。一个简单的解决方案可以这样开始:

class TestGen(object):

    def __init__(self, filename):
        self._filename = filename

    def __enter__(self):
        self._file = open(self._filename, 'w')
        return self

    def __exit__(self, *args):
        self._file.close()

    def make_standard_connection(self):
        self._write('ot 11 02 00 0F FD')
        self._write('in 12 ackValue')
        self._write('in 13 ackValue 09 88')

    def send_data(self, *data):
        data_str = ' '.join(data)
        self._write('ot 21 ackValue 05 %s' % (data_str,))

    def _write(self, line):
        self._file.write('%s\n' % line)


def script_one():
    with TestGen('output1.txt') as g:
        g.make_standard_connection()
        g.send_data('01', '02', '03', '04', '05')

运行 script_one() 将生成一个包含以下内容的文件:

ot 11 02 00 0F FD
in 12 ackValue
in 13 ackValue 09 88
ot 21 ackValue 05 01 02 03 04 05

关于python - 实现我自己的高级测试脚本语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6045869/

相关文章:

python - Telegram 机器人发起与用户的对话

python - 我的第一个 Django 应用程序 - 不知道如何创建主页

python - 制作一个空列表并附加字典的所有子键

python - 从大文件中剥离 html 比 BeautifulSoup 更快/更少的资源破坏方式?或者,使用 BeautifulSoup 的更好方法?

c++ - C++中读取转换字符的问题

python - SQLAlchemy - 设置关系时更新外键

python - 使用 STARTTLS 从 Python 发送电子邮件

java - HtmlCleaner 线程安全吗?

java - 当我尝试使用 BufferedReader 将整数输入存储到数组中时遇到数字格式异常

python - 下载过去一周特定游戏的 50 个 twitch.tv 剪辑