c 网页自动化脚本语言,自动化脚本-TCL语言使用以及个人体会

在我还没正规接触过自动化相关的测试时,一直没有使用过脚本语言,都是偏C和C++较多,当我在第一个项目接触了TCL之后,发现这个脚本语言虽然不是太多人用,但是非常实用而且很方便.(由于刚开博,所以东西比较少,后续发技术相关的会更细节些)

个人总结我工作中实用脚本语言处理的几个任务:处理文本,I/O输入输出,正则表达式,数据匹配,和内嵌html网页语言.

第一个处理文本是tcl的强项,他能够通过seek关键来获取你的文本光标所在的位置,可以对你想要的部分进行处理.用得最多的地方就是取你想要的日志.执行动作前获取光标的位置,执行动作后再一次获取光标位置,然后就可以把其中这2个位置之间的信息拷贝出来,进行日志分析.相关指令:

可以使用seek命令来改变文件的访问点:

seekfileIdoffset?origin?把fileId标识的文件的访问点设置为相对于origin偏移量为offset的位置。origin可以是start,current,end,默认是start。命令的返回值是一空字符串。

例如:seekfileId2000改变fieleId标识的文件访问点,以便下次读写开始于文件的第2000个字节。

seek的第三个参数说明偏移量从哪开始计算。第三个参数必为start,current或end中的一个。start是默认值:即偏移量是相对文件开始处计算。current是偏移量从当前访问位置计算。end是偏移量从文件尾开始计算。

tellfileId返回fileId标识的文件的当前访问位置。

eoffileId如果到达fileId标识的文件的末尾返回1,否则返回0。

处理文本中,tcl还有个强大的打开文件功能,这里我们经常用来记录日志是非常不错的:

下面介绍上述过程中用到的几个基本的文件输入输出命令。

openname?access?

open命令以access方式打开文件name。返回供其他命令(gets,close等)使用的文件标识。如果name的第一个字符是“|”,管道命令被触发,而不是打开文件。

文件的打开方式和我们熟悉的C语言类似,有以下方式:

r只读方式打开。文件必须已经存在。这是默认方式。

r+读写方式打开,文件必须已经存在。

w只写方式打开文件,如果文件存在则清空文件内容,否则创建一新的空文件。

w+读写方式打开文件,如文件存在则清空文件内容,否则创建新的空文件。

a只写方式打开文件,文件必须存在,并把指针指向文件尾。

a+读写方式打开文件,并把指针指向文件尾。如文件不存在,创建新的空文件。

而下面所说的I/O输入输出,大家要弄清楚一个理念,无论是执行进程,执行telnet,执行文本处理,都要有通道的概念,把一切读写的东西都归类为一种东西,这样你就更好的处理以下的东西了,所以大家需要掌握的就很简单了:put,read,after…..然后注意封装每个不同情况的处理就行了。

正则表达式和数据匹配大多用来判断结果和作为比较语句用比较多,给一个建议,能尽量不用正则表达式就不用,因为对于测试脚本来说,他的风险相对较大,一般情况下尽量用string:

string命令的语法:stringoptionarg?arg...?

string命令具有强大的操作字符串的功能,其中的option选项多达20个。下面介绍其中常用的部分。

1.1.1stringcompare ?-nocase??-length int? string1 string2

把字符串string1和string2进行比较,返回值为-1、0或1,分别对应string1小于、等于或大于string2。如果有-length参数,那么只比较前int个字符,如果int为负数,那么这个参数被忽略。如果有-nocase参数,那么比较时不区分大小写。

1.1.2stringequal ?-nocase??-lengthint?string1string2

把字符串string1和string2进行比较,如果两者相同,返回值为1,否则返回0。其他参数与8.5.1同。

1.1.3stringfirststring1string2?startindex?

在string2中从头查找与string1匹配的字符序列,如果找到,那么就返回匹配的第一个字母所在的位置(0-based)。如果没有找到,那么返回-1。如果给出了startindex变量,那么将从startindex处开始查找。例如:

% string first abdefabc

3

% string first abdefabc4

-1

1.1.4stringindexstringcharIndex

返回string中第charIndex个字符(0-based)。charIndex可以是下面的值:

整数n:字符串中第n个字符(0-based)

end :最后一个字符

end-整数n:倒数第n个字符。string index "abcd" end-1返回字符'c'

如果charIndex小于0,或者大于字符串string的长度,那么返回空。

例如:

% string index abcdef2

c

% string index abcdefend-2

d

1.1.5stringlaststring1 string2?startindex?

参照8.5.3.唯一的区别是从后往前查找

1.1.6stringlengthstring

返回字符串string的长度.

1.1.7stringmatch ?-nocase?patternstring

如果pattern匹配string,那么返回1,否则返回0.如果有-nocase参数,那么就不区分大小写.

在pattern中可以使用通配符:

*匹配string中的任意长的任意字符串,包括空字符串.

?匹配string中任意单个字符

[chars]匹配字符集合chars中给出的任意字符,其中可以使用A-Z这种形式

\x匹配单个字符x,使用'\'是为了让x可以为字符*,-,[,].

例子:

%string match * abcdef

1

% stringmatch a*abcdef

1

stringmatcha?cdefabcdef

1

% string match {a[b-f]cdef}abcdef//注意一定药用'{',否则TCL解释器会把b-f当作命令名

1//从而导致错误

% string match {a[b-f]cdef}accdef

1

1.1.8stringrangestringfirstlast

返回字符串string中从第first个到第last个字符的子字符串(0-based)。如果first<0,那么first被看作0,如果last大于或等于字符串的长度,那么last被看作end,如果first比last大,那么返回空。

1.1.9stringrepeatstringcount

返回值为:重复了string字符串count次的字符串。例如:

% string repeat "abc"2

abcabc

1.1.10stringreplacestringfirstlast?newstring?

返回值为:从字符串string中删除了第first到第last个字符(0-based)的字符串,如果给出了newstring变量,那么就用newstring替换从第first到第last个字符。如果first<0,那么first被看作0,如果last大于或等于字符串的长度,那么last被看作end,如果first比last大或者大于字符串string的长度或者last小于0,那么原封不动的返回string。

1.1.11stringtolowerstring?first??last?

返回值为:把字符串string转换成小写后的字符串,如果给出了first和last变量,就只转换first和last之间的字符。

1.1.12stringtoupperstring?first??last?

同8.5.11。转换成大写。

1.1.13stringtrimstring?chars?

返回值为:从string字符串的首尾删除掉了字符集合chars中的字符后的字符串。如果没有给出chars,那么将删除掉spaces、tabs、newlines、carriage returns这些字符。例如:

% string trim "abcde"{a d e}

bc

% string trim"def

> "

def

1.1.14stringtrimleftstring?chars?

同8.5.13。不过只删除左边的字符。

1.1.15stringtrimrightstring?chars?

同8.5.13。不过只删除右边的字符。

最后总结:本人第一次能够完全做测试持续集成的过程包括:自动化检测安装包,自动拷贝和卸载安装,自动执行很多用例,自动出结果,把失败用例邮件发给各个关注的人都是全自动每日定时跑的,其中90%都是用tcl完成,虽然只是项目的代码实施者,但是后续有机会把tcl用在新的项目中,试着作为架构搭建的角色完成一个自动化项目,还是一个不错的脚本后盾。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值