Ruby: Ruby脚本在测试中的使用

如果存在以下的场景:
1. 放置在公司的读报机服务器,每天都是开启的;
2. 读报机每天下载报纸,一旦成功/失败,就会有相应的记录生成在某个xml文件中;
3. 现在有过去一年的读报机下载xml,大约有200多份,每份xml中存储了记录如下:

现在你的经理想从测试人员你那儿获取一些知识:
过去一年,我们的读报机功能,哪些报纸一直能够给客户下载?哪些报纸我们告诉客户是可以下载的,但是实际上是下载失败的?
如果去找开发,也许通过连接数据库,运行一下SQL查询,记录就出来了,但是如果服务器不允许你访问,需要你统计结果,那怎么办?
 
如果你会Ruby脚本,一切都非常简单:

path = "C:\\Users\\chenpassion\\Desktop\\20130806.xml"

def get_downloaded(path)
    path = path.gsub('\\', '\\\\')
    #把文件所有的内容都读取出来
    file = File.read(path)
    #把每个报纸所在的段扫描出来
    newspapers = file.gsub("\n", " ").scan(/\<NewspaperReport.*?\/\>/)

    #定义一个数组,存放所有下载完成的报纸
    newspaper_names = []
    
    #获取所有下载完成的报纸信息    
    for newspaper in newspapers
        if newspaper.include?("下载完成")
            chinese_name = newspaper.scan(/ChineseName=".*"/)[-1].gsub(/[(ChineseName=)\"]/, "")
            pinyin_name = newspaper.scan(/NewspaperName=\"\w+\"/)[-1].gsub(/(NewspaperName=)?(\")?/, "")
            newspaper_names << "#{chinese_name}\t#{pinyin_name}"
        end
    end
    puts "总报纸数:#{newspapers.size}"
    puts "下载完成的报纸数:#{newspaper_names.uniq.size}"
    puts newspaper_names.uniq
end

get_downloaded(path)

 

posted @ 2013-08-16 17:00  chenpassion  阅读(406)  评论(0编辑  收藏  举报