最近老大需要一個cucumber的測試項目,為不熟悉代碼可以寫測試用例的同事使用。所以被迫接觸學習了一段時間。
cucumber 用Given When Then 關鍵字寫feature,所以用cucumber的時候,需要先設計好feature的邏輯結構:eg
call api可以用 rest-assured jar來實現,支持jsonpath(rest-assured自帶的jsonpath,也可以用
<!--<dependency>-->
<!--<groupId>com.jayway.jsonpath</groupId>-->
<!--<artifactId>json-path</artifactId>-->
<!--<version>2.4.0</version>-->
<!--</dependency>-->
)。並且cucumber內嵌Gson, 也支持多線程fyi。但是對於很復雜的json結構,寫起來比較麻煩,很難實現。所以我在項目中具體實現的時候,是將json轉為對象去處理,靈活度不夠,但是處理起來簡單省事。
在項目中遇到幾個典型的問題,分享記錄一下:
1 json轉對象時,date轉化出錯
解決辦法1 將對象中的date類型的屬性轉為String
2 去掉json中的date數據
String json1 = str.replaceAll(".*\"([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})\",","\n");
String json2 = json1.replaceAll(",\n.*\"([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})\"","\n");
String json3 = json2.replaceAll(".*\"([0-9]{4})-([0-9]{2})-([0-9]{2})\",","\n");
String json = json3.replaceAll(",\n.*\"([0-9]{4})-([0-9]{2})-([0-9]{2})\"","\n");
在處理時,需注意json中的逗號問題,比如在處理
"date1": "2015-05-05T00:00:00",
"date2": "2015-05-05T00:00:00"
時,第一個是尾部有逗號需要去掉,第二個是尾部沒有逗號,但是需要去掉前面的逗號。
2 java.lang.SecurityException: Invalid signature file digest for Manifest main exception when run jar package;
解決辦法:
3 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path exception when call api.
解決辦法:
暫時就這么多