如何编写一个程序来验证另一个程序/脚本?

问题描述:

如何编写一个程序来测试另一个程序/脚本?如何编写一个程序来验证另一个程序/脚本?

我需要测试一个ruby脚本,它是一个echo服务器;我应该如何编写一个程序来验证echo服务器脚本的正确工作?

+0

目前还不清楚你在问什么:你需要一个连接到回显服务器的客户端,打印一些东西,读取一些东西,比较被写入的内容。 – philant 2010-07-16 10:15:26

+0

是的,我得到了回应服务器的工作,并用telnet手动测试过,事情是我需要自动化测试过程来验证回显服务器显示的是telnet客户端发送的内容,所以这需要写成script/prog另一种语言或红宝石本身。 – 2010-07-16 10:17:45

+0

在Python中有一个'telnet'库,我认为Ruby也是一个。如果您能够使用telnet进行测试,则应该直接使用该库来自动执行该操作。 – 2010-08-12 10:24:39

你可能感兴趣ExpectdejaGnu

你可以使用像这样的TCP回声服务器启动:

require "socket" 

hostname = "localhost" 
port = 2000 

s = TCPSocket.open(hostname, port) 

s.print "something\n"  # was "something" 

line = s.gets 
line.chop! 

if line == "something" 
    puts "echo test passed" 
else 
    puts "echo test failed: rcvd [#{line}]\n" 
end 

s.close 

根据什么样的测试,你需要,你可以成长的测试客户端,使用几个插座,多线程,测试框架如Test ::单位,黄瓜......


编辑:它适用于以下回声服务器,我只是一个“\ n”添加到客户端的数据

require 'socket' 

port = 2000 

server = TCPServer.open(port) 
loop {       
    client = server.accept 
    data = client.gets 
    client.puts data 
    client.close 
} 
+0

哦,对不起,这不起作用,我试过这个客户端为我的回声服务器。 但这个概念是理想的。 – 2010-07-17 12:24:30

+0

好吧,它可以与上面的服务器一起工作,我只需要向交换的字符串添加'\ n'。 – philant 2010-07-19 10:37:48

Ruby有一个名为Test::Unit的内置单元测试框架。不过,我倾向于选择使用BDD框架。理想情况下,BDDers喜欢在实际代码之前编写测试,但您可以在事实之后编写测试。