JMeter script 3: Cách custom Assertion bằng JSR223 Assertion

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 key responseDescription

Ở đâ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.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments