文章目录
前言
本文主要针对字符串如何自动生成展开探索。通过使用Gen.string方式,可以自动生成随机字符串,也可以自动生成大小可控制字符串,同时也支持正则匹配生成某种模式的字符串
一、自定义随机字符串的生成
如果我们不关心字符串的长度或者内容,我们只是想生成一个字符串,那么调用Gen.getString()或更加groovy的方式Gen.string就足够了。
def 'using static factory methods'() {
expect:
Gen.string.iterator().next() instanceof String
println(Gen.string.iterator().next())
}
运行结果且每次运行结果都会不一样:
%NLY4<1YM@hO^yXPUBy&F{4u)-bNXDt7c:dJi|gL;Yt7RF>v>%Ry8gE#lgyZMaP61x,?ovUF9"Yd!22#}T(b>:]pQj0kA0jt
T'\AVy./<kNJ[ec1?uAL;U:jW~1*z(2)2wc*2 7mo.u^>vd\Cq#J/plsP+Q%ZexU.iyoe=5Qc_%Ro0K--c/QfdpCWxZ-~1+
pf;N+$M}DWS>BZnzZ"h25O1-oJj6gI_fc}mb!|!ehxQE KaTeX parse error: Undefined control sequence: \3 at position 24: …jU?Gu0-:b[S3Kro\̲3̲H&8[]}ByU@wD/}U:NhPTe+3Pkn0VRH=jBI-SZI/’}n1aY3=Ap3\
二、可控制长度的字符串
如果我们想要限制生成的单词长度,可以使用以下几种方式
设置字符串最大长度Gen.string(num)
def 'create a string by length'() {
when: 'establishing max string length'
def shortWord = Gen.string(5).iterator().next()
then: 'word size should be less equal than max'
shortWord.size() <= 5
println(shortWord)
}
运行结果且长度都不大于5:
a6j’
设置字符串生成长度大小范围
def 'create a string by length'() {
when: 'establishing min and max word size'
def largerWord = Gen.string(5,10).iterator().next()
then: 'word should be larger equal min'
largerWord.size() >= 5
and: 'word should be less equal max'
largerWord.size() <= 10
println(largerWord)
}
运行结果且永远大于等于5小于等于10
QI-\3
三、正则匹配生成固定格式的字符串
通过正则匹配可以生成固定格式的字符串,例如访问链接
def 'generate a string using a regular expression'() {
expect:
generatedString ==~ '(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]\\d'
println(generatedString)
where:
generatedString << Gen.string(~'(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]\\d').take(10)
}
运行结果且根据take参数10选择生成10个:
https://|?#+:__=,!;=,:S-&-?;##|!,:%|2/?:J=,P:,80_/3%|=!=#,_=:-:–?!?;??+/3+/!?!#,F_/.%-!1,0:=_|+=_.|;/%%M-!+A-…!-=-!E+#7.|8F=:.?=~~9
http://~/;,=%;!=-?!!+O!!.%:=+%-.=:#?5-?%…#M/+0
ftp://||,|&-#S1/##=%~!%-##+##0
https://#,!,/._:±=,.-+/!;,#=?9!##:#,!=-?&_#3;#!%–;=|/,+|?:,:.1.!+9/-?%;.#?Q#-._6##.H#?.|K!!!1G:O?H.0|/=;|&,!+#…:==2!#-;?;:=#,.M&,|=!_|:|_.=B%?|?|=,%|_8.&/?M±!+4
file://=#-,=,4-6J=-Q.+.:9&==3;#.##/4#-!.-:&|9//:|:|_:._,#|!1|/;2!?W,6;#+_|?#,;3=/,-+=;4/_&+!?::W0?-S,@.,=,–.3.L=#/+=?57,?+.!:+|&&?6UP;!.S,-&-;|#=?-/-==,1?~!+!,?||5?2#5==3
ftp://;.||&?#Y–,A:M&|:!!.T-