TCLScriptingFundamentalsTCL快速入门上手指导演示教学.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《TCLScriptingFundamentalsTCL快速入门上手指导演示教学.doc》由会员分享,可在线阅读,更多相关《TCLScriptingFundamentalsTCL快速入门上手指导演示教学.doc(76页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。TCLScriptingFundamentalsTCL快速入门上手指导-Contents1.WWWHAboutTCL-4-1.1.WhatisTCL-4-1.2.WhyTCL-4-1.3.WhenshallweuseTCL-5-1.4.HowtoprogramusingTCL-5-2.TCLBasics-6-2.1.VariablesandSubstitution-6-2.1.1Commandsetandunset-6-2.1.2Commandappend-6-2.1.3Commandincr-7-2.
2、2.MathExpressions-7-2.2.1GeneralMathExpressions-7-2.2.2MathFunctions-8-2.3.StringManipulation-9-2.3.1Commandstring-9-2.3.2Commandformat-14-2.3.3RegularExpression-16-2.4.ListManipulation-20-2.4.1BasicTCLListCommands-20-2.4.2AdvancedTCLListCommands-22-2.5.FileOperations-25-2.5.1Commandopen-25-2.5.2Com
3、mandfile-28-2.6.ControlFlow-31-2.6.1Theifcommand-31-2.6.2LoopingandLoopControlcommands-32-3.TCLextensions-34-3.1.TCLPackageExpect-34-3.2.TCLPackageTnm-35-4.Appendix-38-4.1.AppendixA,StringCommands-38-4.2.AppendixB,ListCommands-39-4.3.AppendixC,FlowControlCommands-40-4.4.AppendixD,MathFunctions-40-4.
4、5.AppendixE,References-41-1. WWWHAboutTCL1.1 本文是针对那些对TCL没有或者有一些基础认识的测试工程师,这个标题中的WWWH并不是一个英文单词,而是一个缩写,这个缩写所提出的问题也基本上是本文所要提出并解决的问题;他们分别是What什么是TCL、Why为什么要使用TCL、When什么时候我们该使用TCL、How如何使用TCL。如果您读到这里觉得这四个问题已经很清楚了,那么此文对您意义不大,不必再浪费时间阅读;如果您对其中的一个或者多个问题仍存有疑惑,也许本文能帮助你找到一些您需要的答案。.WhatisTCL在开始认识任何事物之前,我们首先要弄清楚的一
5、件事情就是它到底是什么,做什么用的;学习TCL之前也一样,我先来了解一下TCL到底是什么。TCL的缩写是ToolCommandLanguage,它是一种解释性的脚本语言,TCL以及它的图形界面工具包Tk最早是由美国加州大学伯克利分校(UniversityofCalifornia,Berkeley)的JohnK.Ousterhout教授设计完成的。需要注意的是TCL的两大定位:第一,它是脚本语言;第二,它是解释性的语言。那么什么又是脚本语言,什么又是解释性的脚本语言呢?大多数有工科背景的读者应该知道,计算机是不能直接读懂或者执行高级计算机语言的,计算机只能识别机器码,CPU通过机器码从内存中读取
6、并执行相应的指令。所以高级计算机语言要被计算机识别和运行必须进行一项翻译工作,将高级计算机语言翻译成为机器能读懂的机器语言。有的高级语言在完成编写之后,将翻译这个工作交给编译器来完成,编译器将高级的计算机语言根据预先约定好的规则翻译成机器码,并生成一个机器能识别的可执行文件,经典的程序语言C就是这样的一种高级计算机语言,我们称之为编译性语言。有的语言,在完成编写之后,省略掉翻译这个过程,它不需要编译器来帮助它完成转换。那么机器又是如何读懂这类语言的呢?这种语言,在执行的时候通过自身的解释器进行翻译,也就是说解释器在执行代码的时候才会将其逐行转换成为机器能识别的机器码,从而达到执行的目的。知道了
7、前面的这些信息之后,相信大家会明白,原来这种语言的源文件和编译性语言的源文件是不同的。编译性语言的源文件在完成编译之后就没有用了,没有这个源文件,机器只需要编译后的可执行文件就能完成相应的操作;可解释性语言的源文件在执行过程中才被翻译,在执行过程中还是必须的,这也就是为什么我们称之为脚本(script)语言。读到这里,相信您对解释性脚本语言以及TCL有了个大概的认知,知道了它是什么,那么接下来我就要去问,为什么要用TCL而不用别的解释性脚本语言呢?选择使用TCL有什么好处呢?1.2 .WhyTCL在这一小节我们将探讨一下为什么在我们的测试工作中使用解释性脚本语言,以及为什么我们要在测试中使用T
8、CL的脚本而不是其他的解释性脚本语言。本文假定读者对于通信设备的测试工作已经有了基本的认识,所以对于自动化测试的重要性以及自动化测试在测试方法学中的相关理论部分,在本文中不再冗叙。在繁重枯燥的测试工作中,使用计算机语言来编写自动化脚本是提供工作效率、缩短测试周期的重要手段和途径。那么为什么我们要选择TCL这种语言而不选择其他的脚本语言呢?事实上,目前有多种流行的脚本语言,TCL只是其中的一种而已,例如VB、Python、Perl等等;脚本语言在很多行业有着广泛的应用,在通信设备行业中,TCL是众多厂商的共同选择,有很多世界级的通信设备制造商更是有着很高程度的脚本自动化测试;更为重要的是,通信设
9、备测试仪器仪表厂商对于TCL的支持,是大部分通信设备厂商在测试中采用TCL作为自动化测试脚本语言的根本原因之一,例如SpirentSmartbits,IXIA等测试仪器都是支持TCL脚本驱动的。当然脚本语言的无需编译,顺序可执行以及错误处理机制都是脚本语言适用于自动化测试的根本原因,由于这些属于脚本语言的共性,在此就无须冗叙了。1.3 .WhenshallweuseTCL前面花了一些篇幅来介绍TCL是什么以及为什么要使用TCL,那么您也许比较疑惑,既然脚本语言如此高效,那么是不是把测试工作全部由脚本来实现就好了呢?只要编写好测试脚本,测试工作就会自动完成,测试工程师们也就可以高枕无忧了。如果老
10、板们也是这么想的,那么很不幸,大部分的测试工程师也许都要失业了。事实上,自动化在测试工作中只是多种测试方法和测试途径之一,自动化测试绝对不是万能的从而取代手工测试的。那么作为一个测试工程师,到底该在什么时候使用TCL编写自动化脚本来实现自动化测试呢?总体来说,那些繁琐的机械化的且耗费很多人力的测试比较适合用脚本来实行自动化测试,把测试工程师从繁琐枯燥的重复劳动中解放出来从而能将精力放在一些更加复杂的测试中去。下面列举一些使用TCL开发自动化脚本之前需要考虑的因素,供读者参考:1) 使用TCL开发的自动化脚本应该是由功能性测试(Functiontesting)阶段和回归测试(Regression
11、test)阶段的需求而驱动编写的,在一些常用的应用场景测试中也可以开发一些重复利用率高的TCL脚本;2) 开发的自动化脚本必须是有较高的重复利用率,如果花很多精力编写一个只会用一两次的脚本是得不偿失的;3) 开发的自动化脚本必须是可读性高的,易于维护的,并且能提供信息收集能力的脚本,一个无法提供错误信息反馈的脚本对于测试是没有价值的;4) 并不是所有的功能测试与回归测试都能通过自动化脚本来完成,当开发一个脚本所需要的精力大大超过手工测试的精力时,要避免使用脚本测试;以上列举出来只是一些基本的需要考量的因素,读者可以根据自身的工作情况灵活决定脚本的开发。1.4 有了上面的信息,我们可以开始了解T
12、CL这个脚本语言了,也就是如何使用TCL。.HowtoprogramusingTCL在后续的几章节,会重点从变量、数学运算、字符串操作、正则表达式、列表操作、文件操作等几个方面来介绍TCL,通过阅读上述几个方面的内容能对TCL的编写规则以及内嵌命令有初步的了解并能动手编写出一些简单常用的TCL脚本。2. TCLBasics2.1 .VariablesandSubstitution在TCL中,变量可以是单个字符/数字,也可以是字符串,也可以是列表或者是数组。总体来说,TCL中涉及到的常用的变量替换以及操作命令有四个:set、unset、append和incr。2.1.1 Commandsetan
13、dunsetTCL命令set是用来定义变量(字符/数字、字符串、列表、数组),而unset则是用来删除变量的,set与unset互为逆操作。%seta10;#定义变量a并赋值数字1010%setab;#定义变量a并赋值字符bb%setaHelloWorld!;#定义变量a并赋值字符串”HelloWorld!”HelloWorld!%seta12345;#定义变量a并赋值列表1234512345%setarr(a)1;#定义数组arr并赋值arr(a)数字112.1.2 通过上面的例子读者应该很容易看出TCL中的变量定义以及赋值的规律,而unset就是set的逆操作,unseta就是删除变量a。
14、Commandappend命令append的作用是将字符或者字符串直接添加到原变量值的末尾。%seta0;#定义变量a并赋值数字00%appendax0800;#添加字符串”x0800”到a的尾部0x0800%setb;#定义变量b为空字符串%appendbABC;#添加字符串”ABC”到b的尾部ABC%appendbD;#添加字符”D”到b的尾部ABCD2.1.3 Commandincr命令incr的作用是对变量的值进行增量操作,默认增量为1,但是操作对象仅对于整数。%seta100;#定义变量a并赋值100100%incra;#使用默认增量对a作增量操作101%incra100;#对a的值
15、增量100201%incra-101;#对a的值增量-101100在这里顺便介绍一下incr的一个小技巧,灵活使用incr命令可以达到数制转换的目的,可将八进制或者十六进制的数转换为十进制整数。%seta0x0800;#定义变量a并赋值十六进制数0x08000x0800%incra0;#对a的值作0增量达到数制转换的目的2048%setb0126;#定义变量b并赋值八进制数01260126%incrb0;#对b的值作0增量达到数制转换的目的862.2 .MathExpressions和其他的高级计算机语言一样,TCL也提供了强大的数学运算功能。TCL解释器本身不支持对数学运算表达式的求值,所有
16、的运算都是通过TCL内嵌命令expr来实现的。TCL中的大部分数学运算符与C语言类似。在这里必须强调的一点是任何的数学表达式都必须通过expr来实现,否则是无法被TCL解释器处理的。%1+2;#没有使用expr命令的数学表达式invalidcommandname1+2%expr1+2;#使用了expr命令的数学表达式32.2.1 GeneralMathExpressions对于大家熟知的加减乘除就不再介绍了,运算符和C是一样的;下面通过例子来看看几个常用的数学表达式:逻辑与、逻辑或与选择表达式。注意逻辑与的运算符是&,逻辑或的运算符是|。%seta11%setb00%expr$a&$b;#逻辑
17、与运算0%expr$a|$b;#逻辑或运算1通过上面的例子细心的读者会发现在进行逻辑与和逻辑或运算的时候变量前面都有一个$符号,这个符号代表变量的值。例如a代表变量的名字,而$a代表的是变量的值,在上面的例子中,$a等于1。注意在TCL的数学运算中是值之间进行运算,所以在表达式中要使用变量值,而不是变量名。下面再通过一个例子来看一下选择表达式,选择表达式的基本格式为:expr($a$b)?$a:$b;基本功能是括号中的表达式成立的话则选择a的值,否则选择b的值。%seta1010%setb2020%setcexpr($a$b)?$a:$b;#判断条件成立选择a的值赋给c10%setcexpr(
18、$a返回值为-1,0和1;分别代表小于、等于和大于;stringequalstring1string2=返回值为1和0;分别代表相等与不相等;注意stringcompare命令的返回值代表的小于和大于是按照英文字母表中的顺序来的,原则是小写字母大于大写字母,字母表顺序越靠后的大于顺序靠前的,也就是aZA的顺序,下面通过几个例子来看一下stringcompare/stringequal的基本功能:%stringcompareabcxyz-1%stringcompareabcABC1%stringcompareABCABC0%stringequalabcABC0%stringequalabcabc
19、1除去stringcompare与stringequal在命令功能上的不同,这两个命令在关键字扩展使用上又有着很多的相同。例如,两个命令都可以用-nocase关键字在字符串比较的时候忽略字符串的大小写差异;两个命令都可以用-lengthn关键字在字符串比较时只比较前n个字符。通过下面的例子读者可以对关键字的使用有更直观的认识:%stringcompare-nocaseabcABC0%stringequal-nocaseabcABC1%stringcompare-length3abcxyzabcdef0%stringequal-length4abcdmnabcdpq1%stringcompare
20、-nocase-length3AbCdefaBcxyz0%stringequal-nocase-length2XYacbdxyzabc12.3.1.2 .Stringmatching字符串操作的另一个常见的操作是字符串的匹配,我们通常需要知道某个或某些未知字符串中是否有我们所需要的或感兴趣的某个字符或者部分字符串。TCL中做字符串匹配最常用的命令是stringmatch,该命令有很大的使用灵活度,用户可以通过指定不同的匹配条件来检查字符串的匹配情况。下面我通过stringmatch命令的基本格式和几个例子来了解它的使用方法;其命令基本格式为:stringmatchpatternstring%s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCLScriptingFundamentalsTCL 快速 入门 上手 指导 演示 教学
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内