【问题标题】:Python Telnet with test driven development带有测试驱动开发的 Python Telnet
【发布时间】:2015-06-02 16:31:42
【问题描述】:

我正在编写一些 Python (3.4.2) 脚本来远程登录到我们的旧版 VMS 系统以运行一些报告。我们用来访问系统的终端仿真是VT320。

我想在我的脚本中使用 TDD,以在继续之前帮助验证我是否在正确的菜单中。

下面是我的脚本的开始。我不确定如何合并:
如果 test1 通过,请执行 step1
如果 test2 通过,请执行 step2
等等

是否有人将 TDD 整合到 Python Telnet 脚本中以验证您在远程系统中的位置?

我该去哪里?

import unittest
import re
import telnetlib
timeout = 120
dataqueue = ""
f = open('datafile.txt', 'w')

class ConnectionTest(unittest.TestCase):
    def test_connection_to_Legacy_System(self):
        a = "---Test---"
        self.assertIsNone(a)
if __name__ == "__main__":
    unittest.main()

tn = telnetlib.Telnet(HOST,23,timeout)
tn.read_until(b"YOUR ID:")
tn.write(str.encode(user + "\r\n"))
tn.read_until(b"PASSWORD:")
tn.write(str.encode(password + "\r\n"))
tn.read_until(b"Selection: ")
tn.write("1\r\n")
dataqueue = tn.read_very_eager()
dataqueue = dataqueue.decode('ascii')

tn.close()
f.write(dataqueue)
f.close()

【问题讨论】:

    标签: python-3.x tdd telnet legacy vms


    【解决方案1】:

    我一无所知(关于 Python 或 TDD),但看到一些您可能想要检查的元素。

    \r 具有 ASCII 值 13 = CR = 回车 \n 有 ASCII 值 10 = LF = LineFeed 对吗?

    当“Enter”为类型时,仅发送 CR。 LF 是 LF 是回显到终端的一部分,而不是来自终端。

    发送 LF 通常被 OpenVMS 终端驱动程序解释为“WORD DELETE”。现在在建议用法中没有什么区别,因为下一个输入没有要删除的内容,但仍然。

    SET HOST 0/LOG 可能有助于显示需要发送和预期返回的字符。

    当我使用 SSH 时,我的提示是“登录为:”/“密码:” 和远程登录“用户名:”/“密码:” 我还没有看到“您的 ID:”/“密码:”。 那应该从哪里来?会话是否已记录,这是二级用户名/密码?

    我从这里去哪里?

    你在哪里?到目前为止的输出是什么?成功登录? “选择:”应该来自哪里?程序中的菜单? DCL Login.com ?

    祝你好运! 海因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-09
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多