[기술나눔] 인터페이스 자동화 테스팅에서 어설션 검증은 어떻게 하나요?

서버 측 자동화 테스트 과정에서 요청이 시작된 후 응답 값을 확인해야 합니다. 응답 정보가 예상 값을 충족하는지 확인한 후 이 인터페이스의 자동화된 테스트 케이스를 완전히 통과한 것으로 간주합니다. 따라서 본 장에서는 인터페이스 자동화 테스트에서 서버가 반환한 응답 내용에 대해 어설션 검증을 수행하는 방법에 대해 설명한다.

전투 연습

인터페이스 서비스에 대한 HTTP 요청 정보를 시작하고 응답 콘텐츠를 얻은 후 어설션을 확인합니다.

파이썬 데모 코드

요청이 이루어진 후 변수를 사용하여 객체 r인 응답의 내용을 저장합니다 .Response

r = requests.get("https://httpbin.ceshiren.com/get")

응답 결과:

{
    
      "args": {},  "headers": {
   
       "Accept": "*/*",    "Accept-Encoding": "gzip, deflate",    "Host": "httpbin.ceshiren.com",    "User-Agent": "python-requests/2.25.1",    "X-Forwarded-Host": "httpbin.ceshiren.com",    "X-Scheme": "https"  },  "origin": "119.123.205.82",  "url": "https://httpbin.ceshiren.com/get"}

Response 개체에는 응답 헤더 직접 가져오기, 유니코드로 인코딩된 응답 콘텐츠 가져오기, 이진 응답 콘텐츠 가져오기, 원래 응답 콘텐츠 가져오기 등과 같이 호출할 수 있는 많은 강력한 메서드가 있습니다.

응답 어설션

응답 상태 코드 어설션

  • 어설션 성공

import requestsr = requests.get('https://httpbin.ceshiren.com/get')assert r.status_code==200

assert파이썬의 내장 함수로 표현식을 판단하는 데 사용되며 표현식 조건이 False이면 예외가 발생합니다. r.status_code반환 값의 상태 코드를 가져오는 데 사용되는 응답 개체의 메서드입니다. assert r.status_code==200 상태 코드가 200인지 판단하는 것이고, 200이 아니면 예외를 던진다.

  • 어설션 실패

>>> import requests>>> r = requests.get('https://httpbin.ceshiren.com/get')>>> assert r.status_code==400Traceback (most recent call last):  File "<stdin>", line 1, in <module>AssertionError

위의 예에서 알 수 있듯이 응답 상태 코드의 실제 출력은 예상 결과 상태 코드 400과 같지 않으므로 예외가 발생합니다.

Json 응답 어설션

data = {
   
         "hogwarts": ["a","b","c"]  }r = requests.post('https://httpbin.ceshiren.com/post',json=data)print(json.dumps(r.json(),indent=2))assert r.status_code == 200assert r.json()["json"]["hogwarts"][0] == "a"

响应结果:​​​​​​​

"args": {},  "data": "{"hogwarts": ["a", "b", "c"]}",  "files": {},  "form": {},  "headers": {
   
       ...省略...  },  "json": {
   
       "hogwarts": [      "a",      "b",      "c"    ]  },  "origin": "113.89.8.68",  "url": "https://httpbin.ceshiren.com/post"}

assert r.json()["json"]["hogwarts"][0] == "a"를 사용하여 json의 내용을 주장합니다. 여기서 r.json()은 해당 내용 r.json()을 가져옵니다. [ "json"]은 json에서 얻은 내용, r.json()["json"]["hogwarts"]는 호그와트에서 얻은 내용, r.json()["json"]["hogwarts"][ 0 ]은 호그와트의 첫 번째 데이터입니다.

자바 데모 코드

Java는 다음을 사용하여 어설션 검증을 수행하고 then() 메소드는 다양한 유형의 응답 정보를 검증할 수 있습니다.

  • 응답 상태 코드 성공 어설션

import static io.restassured.RestAssured.*;
public class Requests {
   
       public static void main(String[] args) {
   
           given().when().get("https://httpbin.ceshiren.com/get").                //通常通过 then 进行断言验证                 then().statusCode(200);    }}

then() 응답 상태 코드의 검증은 메소드에서 제공하는  메소드를 통해  statusCode() 실현할 수 있으며 statusCode() 메소드는 일반적으로 int 유형 매개변수를 수신합니다. statusCode(200) 응답 상태 코드가 200인지 여부를 나타내며 200이 아니면 예외가 발생합니다.

위 코드의 어설션 확인 코드가 로 변경되면  statusCode(300)콘솔에서 예외 정보를 출력합니다. ​​​​​​​​

Exception in thread "main" java.lang.AssertionError: 1 expectation failed.Expected status code <300> but was <200>.

json 응답 어설션

import static io.restassured.RestAssured.*;import static org.hamcrest.core.IsEqual.equalTo;
public class Requests {
   
       public static void main(String[] args) {
   
           given().when().get("https://httpbin.ceshiren.com/get").                then().body("headers.Host", equalTo("httpbin.ceshiren.com")).log().all();    }}

then().body("headers.Host", equalTo("httpbin.ceshiren.com")) json의 내용을 어설션하여  해당  then().body() 내용을 얻고, 첫 번째 매개변수는 응답 내용에서 실제 필드 값을 추출하고, 두 번째 매개변수는  equalTo() 메서드를 호출하고 예상 결과를 전달합니다.


빈약한 힘

마지막으로 제 글을 꼼꼼히 읽어주신 모든 분들께 감사하다는 말씀을 드리고 싶습니다. 팬 여러분들의 성장과 관심을 쭉 봐서 늘 보답이 필요합니다. 아주 귀한 것은 아니지만 뺏어가셔도 좋습니다. 필요해:

이 자료는 [자동 테스트]를 진행하려는 친구들을 위한 가장 포괄적이고 완전한 준비 창고가 되어야 합니다.이 창고는 또한 가장 어려운 여정을 함께했으며 여러분에게도 도움이 되었으면 합니다! 모든 것이 가능한 한 빨리 이루어져야 하며, 특히 기술 산업에서는 우리의 기술력을 향상시켜야 합니다. 도움이 되었으면 합니다.....

 

Supongo que te gusta

Origin blog.csdn.net/m0_58026506/article/details/130172397
Recomendado
Clasificación