Groovy是什么語言?
Groovy是一種基于JVM(Java虛擬機)的敏捷開發(fā)語言,它結(jié)合了Python、Ruby和Smalltalk的許多強大的特性,Groovy 代碼能夠與 Java 代碼很好地結(jié)合,也能用于擴展現(xiàn)有代碼。由于其運行在 JVM 上的特性,Groovy也可以使用其他非Java語言編寫的庫。
測試中Groovy可以做什么?
測試中Groovy可以作為上下游接口參數(shù)化傳遞的前置腳本和后置腳本使用。
比如:一些md5、base64、sha-256一些加密的腳本編寫。
實例如下:
- md5實例
Hello 測試’.md5()
‘Hello World’.bytes.md5()
DigestUtils.md5Hex('Hello 測試')
- base64實例
'Hello 測試'.bytes.encodeBase64().toString()
new String('SGVsbG8gV29ybGQ='.decodeBase64())
- sha-256
‘Hello 測試’.sha256()
‘Hello World’.bytes.sha256()
DigestUtils.sha256Hex('Hello 測試')
Groovy基礎(chǔ)語法
- groovy注釋
1、單行注釋://
2、多行注釋:/…/
3、文檔注釋:/*…/
4、Shebang line注釋:
#!/usr/bin/env groovy
println "Hello from the shebang line"
-
關(guān)鍵字
- 字符串
1、單引號字符串:’hello world'
單引號字符串是普通的java.lang.String,不支持EL表達(dá)式
2、雙引號字符串:”hello world”
當(dāng)雙引號字符串中沒有el表達(dá)式時,字符串的類型為java.lang.String,當(dāng)雙引號字符串中包含EL表達(dá)式時,字符串類型為groovy.lang.GString
class GroovyTest {
static void main(String[] args){
def name = 'java'
def greeting = "Hello ${name}"
def myVar = greeting;
println(myVar)
}
static String testGroovy(){
def name = 'java'
def greeting = "Hello ${name}"
return greeting
}
}
3、三雙引號字符串:
static void main(String[] args){
def name = 'Groovy'
def template = """
hellow ${name},
${name} ->java
"""
println(template)
}
- list集合
Groovy中沒有定義自己的List類型,使用的是java.util.List類型。通過一對[]包括,里面的元素以,分隔來定義一個List。默認(rèn)情況下,創(chuàng)建的List的類型為java.util.ArrayList。
示例:
static void main(String[] args){
def numbers = [1, 2, 3]
for (int i=0;i<numbers.size();i++){
print(numbers[i])
}
}
list中元素可以是不同類型
def list = [1, "a", true]
可以使用[]獲取List中的元素,可以使用<<向list末尾追加元素
def letters = ['a', 'b', 'c', 'd']
assert letters[0] == 'a'
assert letters[1] == 'b'
assert letters[-1] == 'd'
assert letters[-2] == 'c'
letters[2] = 'C'
assert letters[2] == 'C'
letters << 'e'
assert letters[ 4] == 'e'
assert letters[-1] == 'e'
assert letters[1, 3] == ['b', 'd']
assert letters[2..4] == ['C', 'd', 'e']
- Arrays數(shù)組
Groovy定義數(shù)組的方式和定義list的方式一樣,只不過聲明時需要制定類型,或者通過as來強制制定類型為Array
String[] arrStr = ['java', 'python', 'c++']
assert arrStr instanceof String[]
assert !(arrStr instanceof List)
def numArr = [1, 2, 3] as int[]
assert numArr instanceof int[]
assert numArr.size() == 3
//多維數(shù)組
def matrix3 = new Integer[3][3]
assert matrix3.size() == 3
Integer[][] matrix2
matrix2 = [[1, 2], [3, 4]]
assert matrix2 instanceof Integer[][]
ps注意:Groovy不支持Java數(shù)組的初始化方式
- Map類型
Map定義方式為:使用[]包括,里面的元素為key/value的形式,key和value以:分隔,每一對key/value以逗號分隔。Groovy穿件的map默認(rèn)類型為java.util.LinkedHashMap
static void main(String[] args){
def colors = [jave: '學(xué)習(xí)', python: '不學(xué)習(xí)', c: '底層']
println(colors.jave)
}
剩下的就是自己可以通過寫java語法實現(xiàn)參數(shù)賦值及傳遞了。
簡單寫了一個groovy參數(shù)提取demo示例如下:
更多測試技術(shù)分享、學(xué)習(xí)資源以及一些其他福利可關(guān)注公眾號:【Coding測試】獲取:
