b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

使用 Perl 脚本实现交互式命令行程序的管理与测试自动化(4)

电脑杂谈  发布时间:2019-08-06 09:01:52  来源:网络整理

清单 24. target.pl

				
 #! /usr/bin/perl 
 my $p = 'tpt %d> ';             # 输入提示符
 printf( $p, 0 ); 
 while( <> ){ 
    do { print "byebye/n"; last } if /quit/; 
                                # 如果用户输入 quit 则输出"byebye",跳出循环
    print uc( $_ );             # 否则以大写的形式输出用户本次输入
    printf( $p, $. );           # 更新输入提示符,$. 为读入行数计数器 
 } 
 print "quit> /n";               # 打印结束输入提示符

某次运行结果如下:

清单 25. target.pl 执行结果示例

				
 # ./target.pl 
 tpt 0> 1 
 1 
 tpt 1> 2 
 2 
 tpt 2> quit 
 byebye 
 quit> 
 # 

exptest.pl 脚本用来模拟用户输入不同数据以测试目标程序的功能:

清单 26. exptest.pl

				
 #! /usr/bin/perl 
 use Test::More tests => 4; # 计划执行的测试用例总数
 use Expect::Simple; 
 my %attr = ( Cmd => "./target.pl"
             DisconnectCmd => 'quit', 
             Prompt => [ -re => 'tpt/s/d+> ',  'quit> '], 
             RawPty => 1, 
             Verbose =>3, 
 ); 
 my $res;                   # 实际输出结果
 my $obj = Expect::Simple->new( /%attr ); 
 # 测试用例 1,用户输入 a,预期目标程序输出 A 
 $obj->send( 'a' ); 
 chomp( $res = $obj->before ); 
 is( $res, 'A', 'Test case 1: Input "a" -> Output "A"' ); 
 # 测试用例 2,用户输入 b,预期目标程序输出 B 
 $obj->send( 'b' ); 
 chomp( $res = $obj->before ); 
 is( $res, 'B', 'Test case 2: Input "b" -> Output "B"' ); 
 # 测试用例 3,用户输入 quit,预期目标程序输出 byebye 
 $obj->send( 'quit' ); 
 chomp( $res = $obj->before ); 
 is( $res, 'byebye', 'Test case 3: Input "quit" -> Output "byebye"' ); 
 # 测试用例 4,目标程序输出 byebye 后应直接输出 quit> 
 is ( $obj->match_str, 'quit> ', 'Test case 4: Output "byebye" -> Output "quit>" ' ); 

程序引用了 Test::More 模块,Test::More 是一个编写测试脚本的框架,这里只介绍程序中涉及的部分,更多内容请查阅 CPAN 网站上相关信息。整个测试过程使用 is 函数来判断用例的执行结果:is ( $got, $expected, $comments )。该函数判断 $got 与 $expected 是否相等,相等则通过,输出“ok”,否则输出“not ok”。

对您的摸拟数字电路进行计算机仿真非常重要,这是因为您可以使用 spice(电路仿真程序)计算机程序来进行模拟仿真或使用 ibis(输入/输出缓冲信息规范)程序来进行数字...。watches窗口可以让我们观察变量的变化情况,具体操作是在watches窗口内按insert键:这时,屏幕上弹出一个菜单,我们输入所需要观察的变量名,分别输入i,a,b,c这4个变量名,于是watches窗口内就有如下的4个变量的状态:这时,再次使用单步执行法,我们会发现,这4个变量的状态随着程序的执行而不断变化,这样我们就可以方便地知道执行每一步之后,程序的各个变量的变化情况,从中我们可以知道我们的程序是否出错,在哪里出错,方便我们及时地修改。 迭代器 迭代器的概念图 * 输入迭代器 input iterator 输出迭代器 output iterator 前向迭代器 forward iterator 双向迭代器 bidirectional iterator 随机访问迭代器 random access iterator 迭代器 * 迭代器支持的操作 迭代器是泛化的指针,提供了类似指针的操作(诸如++、*、- 运算符) 输入迭代器 可以用来从序列中读取数据,如输入流迭代器 输出迭代器 允许向序列中写入数据,如输出流迭代器 前向迭代器 既是输入迭代器又是输出迭代器,并且可以对序列进行单向的遍历 双向迭代器 与前向迭代器相似,但是在两个方向上都可以对数据遍历 随机访问迭代器 也是双向迭代器,但能够在序列中的任意两个位置之间进行跳转,如指针、使用vector的begin 、end 函数得到的迭代器 迭代器 迭代器的区间 两个迭代器表示一个区间:[p1, p2 stl算法常以迭代器的区间作为输入,传递输入数据 合法的区间 p1经过n次 n 0 自增 ++ 操作后满足p1 p2 区间包含p1,但不包含p2 * 迭代器 迭代器的辅助函数 advance p, n 对p执行n次自增操作 distance first, last 计算两个迭代器first和last的距离,即对first执行多少次“++”操作后能够使得first last * 迭代器 * 容器 容器类是容纳、包含一组元素或元素集合的对象。

清单 27.exptest.pl 执行结果


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-118246-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 刘猛
      刘猛

      台湾问题得到彻底解决的那一天

    • 周恩来
      周恩来

      甚至对我们示好

    热点图片
    拼命载入中...