首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用curses测试输出

使用curses测试输出
EN

Stack Overflow用户
提问于 2015-03-08 10:44:32
回答 1查看 153关注 0票数 0

我正在尝试使用rspec为我的简单的使用curses的othello应用程序做一个测试。我需要确保终端打印输出,如下所示:

为了使输出更具交互性,我使用了curses。当我检查输出时,它给出了ANSI序列代码的组合(我猜):

代码语言:javascript
复制
[?1049h[1;23r(B[m[4l[?7h[?1h=[39;49m[?1h=[39;49m(B[m[H[2J[4;43H(B[0;1m[32m
┌───┬───┬───┬───┬───┬───┬───┬───┐[5;43H
│   │   │   │   │   │   │   │   │[6;43H
├───┼───┼───┼───┼───┼───┼───┼───┤[7;43H
│   │   │   │   │   │   │   │   │[8;43H
├───┼───┼───┼───┼───┼───┼───┼───┤[9;43H
│   │   │   │   │   │   │   │   │[10;43H
├───┼───┼───┼───┼───┼───┼───┼───┤[11;43H
│   │   │   │   │   │   │   │   │[12;43H
├───┼───┼───┼───┼───┼───┼───┼───┤[13;43H
│   │   │   │   │   │   │   │   │[14;43H
├───┼───┼───┼───┼───┼───┼───┼───┤[15;43H
│   │   │   │   │   │   │   │   │[16;43H
├───┼───┼───┼───┼───┼───┼───┼───┤[17;43H
│   │   │   │   │   │   │   │   │[18;43H
├───┼───┼───┼───┼───┼───┼───┼───┤[19;43H
│   │   │   │   │   │   │   │   │[20;43H
└───┴───┴───┴───┴───┴───┴───┴───┘[39m(B[m[20;43H[?[23;1H[?1049l[?1l>

如果结果是这样,我应该如何测试?

EN

回答 1

Stack Overflow用户

发布于 2015-03-08 21:20:17

您可以将curses应用程序的输出重定向到标准输出,因为这是initscr的默认输出(如果应用程序不要求输入,则会有所帮助)。如果您将输出捕获到一个文件中,则可以执行所需的任何分析。

对于给定的简单示例,curses是在屏幕上绘制一次,使用ANSI转义序列表示光标移动(以“H”结尾的部分)、颜色(以“m”结尾的部分)以及其他一些内容。

我说的很简单--如果屏幕上有很大的空白区域,那么咒语就会跳过这些区域,而没有转义序列的残留物看起来就不太像实际的屏幕了。但是因为你的行离得很近,所以在需要的时候只用几个空格来写文本就不那么费钱了。

如果您将自己限制在像这样的简单示例中,那么您需要做的就是剥离转义序列并比较文本。对于更一般的方法,您可以考虑使用winnstr创建一个屏幕转储实用程序(这样您的应用程序就可以像curses所显示的那样转储屏幕中的文本)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28922509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档