Xuất phát từ câu hỏi 1 bạn nên mình viết luôn 1 bài về cái JSR223 Assertion này.
Bạn ấy nhận được 1 response kiểu như thế này:
Case pass:
{ "responseDescription": "OK", "processCode": "00000" ... }
Case fail:
{ "responseDescription": "Sender and Receiver should not be the same party", "processCode": "10005" ... }
Bạn ấy muốn assert theo rule như sau:
trong response nếu "responseCode": "00000" thì success, nếu khác "responseCode": "00000" thì fail
Cách bạn ấy làm là dùng Response Assertion và test Substring.
Tuy nhiên, vấn đề là cái message khi fail sẽ là Test failed: text expected to contain /00000/
, trong khi cái bạn ấy muốn là Sender and Receiver should not be the same party
, mà cái này nằm bên trong response.
Để làm được việc này, thì chỉ có cách custom Assertion failure message. Mình làm như sau:
- Tạo 1 JSR223 Assertion
- Viết script
import groovy.json.JsonSlurper def slurper = new JsonSlurper() def response = slurper.parseText(prev.getResponseDataAsString()) if (response.processCode != "00000"){ AssertionResult.setFailure(true) AssertionResult.setFailureMessage(response.responseDescription) }
Đoạn code này như sau:
- Read cái response từ String –> Json object
- Kiểm tra xem value của key
processCode
mà khác"00000"
thì sẽ assertion fail và set Failure Message là value của keyresponseDescription
Ở đây mình dùng biến được tạo sẵn AssertionResult
và set result và message là xong
- setFailure(true)
- setFailureMessage(response.responseDescription)
Full list method của AssertionResult
có ở đây.
Tuy nhiên, mình thấy là chả có cái method nào hữu ích ngoài 2 cái method ở trên. LOL
Vậy thôi, xin chào và hẹn gặp lại các bạn ở bài tiếp theo.