Contract Test
Test Anatomy
Test File Anatomy
This section explains the key elements of the generated test file. The Skyramp generated test is editable and runnable like any other executable file.
The header of each test file shows when the test was generated and what command was used
The body of the test file imports all relevant libraries and specify the URL for all test requests
Each method being tested has a function that consists of:
Invocation of Skyramp Client
Definition of the authentication header
Definition of the request body
Definition of the expected response body
Creation of the request
Generated Assertions
Status code assertion
Schema check
Body value checks (first 3 values)
Test File Anatomy
This section explains the key elements of the generated test file. The Skyramp generated test is editable and runnable like any other executable file.
The header of each test file shows when the test was generated and what command was used
The body of the test file imports all relevant libraries and specify the URL for all test requests
Each method being tested has a function that consists of:
Invocation of Skyramp Client
Definition of the authentication header
Definition of the request body
Definition of the expected response body
Creation of the request
Generated Assertions
Status code assertion
Schema check
Body value checks (first 3 values)
Test File Anatomy
This section explains the key elements of the generated test file. The Skyramp generated test is editable and runnable like any other executable file.
The header of each test file shows when the test was generated and what command was used
The body of the test file imports all relevant libraries and specify the URL for all test requests
Each method being tested has a function that consists of:
Invocation of Skyramp Client
Definition of the authentication header
Definition of the request body
Definition of the expected response body
Creation of the request
Generated Assertions
Status code assertion
Schema check
Body value checks (first 3 values)
Python
Java
Typescript
Test Anatomy for All Methods of Endpoint
# Generated by Skyramp v1.2.7 on 2025-07-22 10:15:53.285078 -0400 EDT m=+3.244159293
# Command: skyramp generate contract rest https://demoshop.skyramp.dev/api/v1/products \
# --api-schema https://demoshop.skyramp.dev/openapi.json \
# --framework pytest \
# --language python \
# Import of required libraries
import skyramp
import os
import time
# URL for test requests
URL = "https://demoshop.skyramp.dev"
# Definition of authentication header
def get_header():
headers = {}
if os.getenv("SKYRAMP_TEST_TOKEN") is not None:
headers["Authorization"] = "Bearer " + os.getenv("SKYRAMP_TEST_TOKEN")
return headers
# contract test for /api/v1/products GET
def test_products_get():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Expected Response Body
expected_products_GET_response_body = r'''[{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}]'''
# Execute Request
products_GET_response = client.send_request(
url=URL,
path="/api/v1/products",
method="GET",
headers=headers,
query_params={
"limit": 10,
"offset": 0,
"order": "asc",
"orderBy": None
}
)
# Generated Assertions
assert products_GET_response.status_code == 200
assert skyramp.check_schema(products_GET_response, expected_products_GET_response_body)
assert skyramp.get_response_value(products_GET_response, "0.category") is not None
assert skyramp.get_response_value(products_GET_response, "0.created_at") is not None
assert skyramp.get_response_value(products_GET_response, "0.description") is not None
# contract test for /api/v1/products POST
def test_products_post():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Request Body
products_POST_request_body = r'''{
"category": "Toys",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99
}'''
# Expected Response Body
expected_products_POST_response_body = r'''{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}'''
# Execute Request
products_POST_response = client.send_request(
url=URL,
path="/api/v1/products",
method="POST",
body=products_POST_request_body,
headers=headers
)
# Generated Assertions
assert products_POST_response.status_code == 201
assert skyramp.check_schema(products_POST_response, expected_products_POST_response_body)
assert skyramp.get_response_value(products_POST_response, "category") is not None
assert skyramp.get_response_value(products_POST_response, "created_at") is not None
assert skyramp.get_response_value(products_POST_response, "description") is not None
# contract test for /api/v1/products/{product_id} GET
def test_products_product_id_get():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Declaration of variables
product_id = 0
# Expected Response Body
expected_products_product_id_GET_response_body = r'''{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}'''
# Execute Request
products_product_id_GET_response = client.send_request(
url=URL,
path="/api/v1/products/{product_id}",
method="GET",
headers=headers,
path_params={"product_id": product_id}
)
# Generated Assertions
assert products_product_id_GET_response.status_code == 200
assert skyramp.check_schema(products_product_id_GET_response, expected_products_product_id_GET_response_body)
assert skyramp.get_response_value(products_product_id_GET_response, "category") is not None
assert skyramp.get_response_value(products_product_id_GET_response, "created_at") is not None
assert skyramp.get_response_value(products_product_id_GET_response, "description") is not None
# contract test for /api/v1/products/{product_id} PUT
def test_products_product_id_put():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Declaration of variables
product_id = 0
# Request Body
products_product_id_PUT_request_body = r'''{
"category": "Toys",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99
}'''
# Expected Response Body
expected_products_product_id_PUT_response_body = r'''{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}'''
# Execute Request
products_product_id_PUT_response = client.send_request(
url=URL,
path="/api/v1/products/{product_id}",
method="PUT",
body=products_product_id_PUT_request_body,
headers=headers,
path_params={"product_id": product_id}
)
# Generated Assertions
assert products_product_id_PUT_response.status_code == 200
assert skyramp.check_schema(products_product_id_PUT_response, expected_products_product_id_PUT_response_body)
assert skyramp.get_response_value(products_product_id_PUT_response, "category") is not None
assert skyramp.get_response_value(products_product_id_PUT_response, "created_at") is not None
assert skyramp.get_response_value(products_product_id_PUT_response, "description") is not None
# contract test for /api/v1/products/{product_id} DELETE
def test_products_product_id_delete():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Declaration of variables
product_id = 0
# Execute Request
products_product_id_DELETE_response = client.send_request(
url=URL,
path="/api/v1/products/{product_id}",
method="DELETE",
headers=headers,
path_params={"product_id": product_id}
)
# Generated Assertions
assert products_product_id_DELETE_response.status_code == 204
if __name__ == "__main__":
test_products_get()
test_products_post()
test_products_product_id_get()
test_products_product_id_put()
test_products_product_id_delete()
Change Assertion(s)
By default, we generate value asserts only on the first 3 body values - this prevents the test code from becoming too verbose. Generated body value asserts validate if the field returned a value but do not do any matching.
Default Generated Asserts (lines 99-103)
# Generated Assertions
assert products_POST_response.status_code == 201
assert skyramp.check_schema(products_POST_response, expected_products_POST_response_body)
assert skyramp.get_response_value(products_POST_response, "category") is not None
assert skyramp.get_response_value(products_POST_response, "created_at") is not None
assert skyramp.get_response_value(products_POST_response, "description") is not None
Following the same principle you can simply adjust and add more assertions to the generated code. Additional details on defining assertions can be found in the Pytest Documentation.
# Generated Assertions
assert products_POST_response.status_code == 201
assert skyramp.check_schema(products_POST_response, expected_products_POST_response_body)
assert skyramp.get_response_value(products_POST_response, "category") is not None
assert skyramp.get_response_value(products_POST_response, "created_at") is not None
assert skyramp.get_response_value(products_POST_response, "description") is not None
# Manual addition of asserts
assert skyramp.get_response_value(products_POST_response, "image_url") is not None
assert skyramp.get_response_value(products_POST_response, "in_stock") is not None
assert skyramp.get_response_value(products_POST_response, "name")=="bigbear"
assert skyramp.get_response_value(products_POST_response, "price")==9.99
assert skyramp.get_response_value(products_POST_response, "product_id") is not None
Change Path Parameter(s)
To change the path parameter of any of the contract test cases, add path_params
to any relevant client.send_request
calls. You can specify a variable or immediately adjust the value in the request object:
# Declaration of variables
product_id = 1
# Request Body
products_product_id_PUT_request_body = r'''{
"category": "Toys",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99
}'''
# Expected Response Body
expected_products_product_id_PUT_response_body = r'''{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}'''
# Execute Request
products_product_id_PUT_response = client.send_request(
url=URL,
path="/api/v1/products/{product_id}",
method="PUT",
body=products_product_id_PUT_request_body,
headers=headers,
path_params={"product_id": product_id}
)
Change Query Parameter(s)
To change the query parameter of any of the contract test cases, add query_params
to any relevant client.send_request
calls:
products_GET_response = client.send_request(
url=URL,
path="/api/v1/products",
method="GET",
headers=headers,
query_params={
"limit": 20,
"offset": 0,
"order": "asc",
"orderBy": None
}
)
Python
Java
Typescript
Test Anatomy for All Methods of Endpoint
# Generated by Skyramp v1.2.7 on 2025-07-22 10:15:53.285078 -0400 EDT m=+3.244159293
# Command: skyramp generate contract rest https://demoshop.skyramp.dev/api/v1/products \
# --api-schema https://demoshop.skyramp.dev/openapi.json \
# --framework pytest \
# --language python \
# Import of required libraries
import skyramp
import os
import time
# URL for test requests
URL = "https://demoshop.skyramp.dev"
# Definition of authentication header
def get_header():
headers = {}
if os.getenv("SKYRAMP_TEST_TOKEN") is not None:
headers["Authorization"] = "Bearer " + os.getenv("SKYRAMP_TEST_TOKEN")
return headers
# contract test for /api/v1/products GET
def test_products_get():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Expected Response Body
expected_products_GET_response_body = r'''[{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}]'''
# Execute Request
products_GET_response = client.send_request(
url=URL,
path="/api/v1/products",
method="GET",
headers=headers,
query_params={
"limit": 10,
"offset": 0,
"order": "asc",
"orderBy": None
}
)
# Generated Assertions
assert products_GET_response.status_code == 200
assert skyramp.check_schema(products_GET_response, expected_products_GET_response_body)
assert skyramp.get_response_value(products_GET_response, "0.category") is not None
assert skyramp.get_response_value(products_GET_response, "0.created_at") is not None
assert skyramp.get_response_value(products_GET_response, "0.description") is not None
# contract test for /api/v1/products POST
def test_products_post():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Request Body
products_POST_request_body = r'''{
"category": "Toys",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99
}'''
# Expected Response Body
expected_products_POST_response_body = r'''{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}'''
# Execute Request
products_POST_response = client.send_request(
url=URL,
path="/api/v1/products",
method="POST",
body=products_POST_request_body,
headers=headers
)
# Generated Assertions
assert products_POST_response.status_code == 201
assert skyramp.check_schema(products_POST_response, expected_products_POST_response_body)
assert skyramp.get_response_value(products_POST_response, "category") is not None
assert skyramp.get_response_value(products_POST_response, "created_at") is not None
assert skyramp.get_response_value(products_POST_response, "description") is not None
# contract test for /api/v1/products/{product_id} GET
def test_products_product_id_get():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Declaration of variables
product_id = 0
# Expected Response Body
expected_products_product_id_GET_response_body = r'''{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}'''
# Execute Request
products_product_id_GET_response = client.send_request(
url=URL,
path="/api/v1/products/{product_id}",
method="GET",
headers=headers,
path_params={"product_id": product_id}
)
# Generated Assertions
assert products_product_id_GET_response.status_code == 200
assert skyramp.check_schema(products_product_id_GET_response, expected_products_product_id_GET_response_body)
assert skyramp.get_response_value(products_product_id_GET_response, "category") is not None
assert skyramp.get_response_value(products_product_id_GET_response, "created_at") is not None
assert skyramp.get_response_value(products_product_id_GET_response, "description") is not None
# contract test for /api/v1/products/{product_id} PUT
def test_products_product_id_put():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Declaration of variables
product_id = 0
# Request Body
products_product_id_PUT_request_body = r'''{
"category": "Toys",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99
}'''
# Expected Response Body
expected_products_product_id_PUT_response_body = r'''{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}'''
# Execute Request
products_product_id_PUT_response = client.send_request(
url=URL,
path="/api/v1/products/{product_id}",
method="PUT",
body=products_product_id_PUT_request_body,
headers=headers,
path_params={"product_id": product_id}
)
# Generated Assertions
assert products_product_id_PUT_response.status_code == 200
assert skyramp.check_schema(products_product_id_PUT_response, expected_products_product_id_PUT_response_body)
assert skyramp.get_response_value(products_product_id_PUT_response, "category") is not None
assert skyramp.get_response_value(products_product_id_PUT_response, "created_at") is not None
assert skyramp.get_response_value(products_product_id_PUT_response, "description") is not None
# contract test for /api/v1/products/{product_id} DELETE
def test_products_product_id_delete():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Declaration of variables
product_id = 0
# Execute Request
products_product_id_DELETE_response = client.send_request(
url=URL,
path="/api/v1/products/{product_id}",
method="DELETE",
headers=headers,
path_params={"product_id": product_id}
)
# Generated Assertions
assert products_product_id_DELETE_response.status_code == 204
if __name__ == "__main__":
test_products_get()
test_products_post()
test_products_product_id_get()
test_products_product_id_put()
test_products_product_id_delete()
Change Assertion(s)
By default, we generate value asserts only on the first 3 body values - this prevents the test code from becoming too verbose. Generated body value asserts validate if the field returned a value but do not do any matching.
Default Generated Asserts (lines 99-103)
# Generated Assertions
assert products_POST_response.status_code == 201
assert skyramp.check_schema(products_POST_response, expected_products_POST_response_body)
assert skyramp.get_response_value(products_POST_response, "category") is not None
assert skyramp.get_response_value(products_POST_response, "created_at") is not None
assert skyramp.get_response_value(products_POST_response, "description") is not None
Following the same principle you can simply adjust and add more assertions to the generated code. Additional details on defining assertions can be found in the Pytest Documentation.
# Generated Assertions
assert products_POST_response.status_code == 201
assert skyramp.check_schema(products_POST_response, expected_products_POST_response_body)
assert skyramp.get_response_value(products_POST_response, "category") is not None
assert skyramp.get_response_value(products_POST_response, "created_at") is not None
assert skyramp.get_response_value(products_POST_response, "description") is not None
# Manual addition of asserts
assert skyramp.get_response_value(products_POST_response, "image_url") is not None
assert skyramp.get_response_value(products_POST_response, "in_stock") is not None
assert skyramp.get_response_value(products_POST_response, "name")=="bigbear"
assert skyramp.get_response_value(products_POST_response, "price")==9.99
assert skyramp.get_response_value(products_POST_response, "product_id") is not None
Change Path Parameter(s)
To change the path parameter of any of the contract test cases, add path_params
to any relevant client.send_request
calls. You can specify a variable or immediately adjust the value in the request object:
# Declaration of variables
product_id = 1
# Request Body
products_product_id_PUT_request_body = r'''{
"category": "Toys",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99
}'''
# Expected Response Body
expected_products_product_id_PUT_response_body = r'''{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}'''
# Execute Request
products_product_id_PUT_response = client.send_request(
url=URL,
path="/api/v1/products/{product_id}",
method="PUT",
body=products_product_id_PUT_request_body,
headers=headers,
path_params={"product_id": product_id}
)
Change Query Parameter(s)
To change the query parameter of any of the contract test cases, add query_params
to any relevant client.send_request
calls:
products_GET_response = client.send_request(
url=URL,
path="/api/v1/products",
method="GET",
headers=headers,
query_params={
"limit": 20,
"offset": 0,
"order": "asc",
"orderBy": None
}
)
Python
Java
Typescript
Test Anatomy for All Methods of Endpoint
# Generated by Skyramp v1.2.7 on 2025-07-22 10:15:53.285078 -0400 EDT m=+3.244159293
# Command: skyramp generate contract rest https://demoshop.skyramp.dev/api/v1/products \
# --api-schema https://demoshop.skyramp.dev/openapi.json \
# --framework pytest \
# --language python \
# Import of required libraries
import skyramp
import os
import time
# URL for test requests
URL = "https://demoshop.skyramp.dev"
# Definition of authentication header
def get_header():
headers = {}
if os.getenv("SKYRAMP_TEST_TOKEN") is not None:
headers["Authorization"] = "Bearer " + os.getenv("SKYRAMP_TEST_TOKEN")
return headers
# contract test for /api/v1/products GET
def test_products_get():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Expected Response Body
expected_products_GET_response_body = r'''[{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}]'''
# Execute Request
products_GET_response = client.send_request(
url=URL,
path="/api/v1/products",
method="GET",
headers=headers,
query_params={
"limit": 10,
"offset": 0,
"order": "asc",
"orderBy": None
}
)
# Generated Assertions
assert products_GET_response.status_code == 200
assert skyramp.check_schema(products_GET_response, expected_products_GET_response_body)
assert skyramp.get_response_value(products_GET_response, "0.category") is not None
assert skyramp.get_response_value(products_GET_response, "0.created_at") is not None
assert skyramp.get_response_value(products_GET_response, "0.description") is not None
# contract test for /api/v1/products POST
def test_products_post():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Request Body
products_POST_request_body = r'''{
"category": "Toys",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99
}'''
# Expected Response Body
expected_products_POST_response_body = r'''{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}'''
# Execute Request
products_POST_response = client.send_request(
url=URL,
path="/api/v1/products",
method="POST",
body=products_POST_request_body,
headers=headers
)
# Generated Assertions
assert products_POST_response.status_code == 201
assert skyramp.check_schema(products_POST_response, expected_products_POST_response_body)
assert skyramp.get_response_value(products_POST_response, "category") is not None
assert skyramp.get_response_value(products_POST_response, "created_at") is not None
assert skyramp.get_response_value(products_POST_response, "description") is not None
# contract test for /api/v1/products/{product_id} GET
def test_products_product_id_get():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Declaration of variables
product_id = 0
# Expected Response Body
expected_products_product_id_GET_response_body = r'''{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}'''
# Execute Request
products_product_id_GET_response = client.send_request(
url=URL,
path="/api/v1/products/{product_id}",
method="GET",
headers=headers,
path_params={"product_id": product_id}
)
# Generated Assertions
assert products_product_id_GET_response.status_code == 200
assert skyramp.check_schema(products_product_id_GET_response, expected_products_product_id_GET_response_body)
assert skyramp.get_response_value(products_product_id_GET_response, "category") is not None
assert skyramp.get_response_value(products_product_id_GET_response, "created_at") is not None
assert skyramp.get_response_value(products_product_id_GET_response, "description") is not None
# contract test for /api/v1/products/{product_id} PUT
def test_products_product_id_put():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Declaration of variables
product_id = 0
# Request Body
products_product_id_PUT_request_body = r'''{
"category": "Toys",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99
}'''
# Expected Response Body
expected_products_product_id_PUT_response_body = r'''{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}'''
# Execute Request
products_product_id_PUT_response = client.send_request(
url=URL,
path="/api/v1/products/{product_id}",
method="PUT",
body=products_product_id_PUT_request_body,
headers=headers,
path_params={"product_id": product_id}
)
# Generated Assertions
assert products_product_id_PUT_response.status_code == 200
assert skyramp.check_schema(products_product_id_PUT_response, expected_products_product_id_PUT_response_body)
assert skyramp.get_response_value(products_product_id_PUT_response, "category") is not None
assert skyramp.get_response_value(products_product_id_PUT_response, "created_at") is not None
assert skyramp.get_response_value(products_product_id_PUT_response, "description") is not None
# contract test for /api/v1/products/{product_id} DELETE
def test_products_product_id_delete():
# Invocation of Skyramp Client and calling of authentication header
client = skyramp.Client()
headers = get_header()
# Declaration of variables
product_id = 0
# Execute Request
products_product_id_DELETE_response = client.send_request(
url=URL,
path="/api/v1/products/{product_id}",
method="DELETE",
headers=headers,
path_params={"product_id": product_id}
)
# Generated Assertions
assert products_product_id_DELETE_response.status_code == 204
if __name__ == "__main__":
test_products_get()
test_products_post()
test_products_product_id_get()
test_products_product_id_put()
test_products_product_id_delete()
Change Assertion(s)
By default, we generate value asserts only on the first 3 body values - this prevents the test code from becoming too verbose. Generated body value asserts validate if the field returned a value but do not do any matching.
Default Generated Asserts (lines 99-103)
# Generated Assertions
assert products_POST_response.status_code == 201
assert skyramp.check_schema(products_POST_response, expected_products_POST_response_body)
assert skyramp.get_response_value(products_POST_response, "category") is not None
assert skyramp.get_response_value(products_POST_response, "created_at") is not None
assert skyramp.get_response_value(products_POST_response, "description") is not None
Following the same principle you can simply adjust and add more assertions to the generated code. Additional details on defining assertions can be found in the Pytest Documentation.
# Generated Assertions
assert products_POST_response.status_code == 201
assert skyramp.check_schema(products_POST_response, expected_products_POST_response_body)
assert skyramp.get_response_value(products_POST_response, "category") is not None
assert skyramp.get_response_value(products_POST_response, "created_at") is not None
assert skyramp.get_response_value(products_POST_response, "description") is not None
# Manual addition of asserts
assert skyramp.get_response_value(products_POST_response, "image_url") is not None
assert skyramp.get_response_value(products_POST_response, "in_stock") is not None
assert skyramp.get_response_value(products_POST_response, "name")=="bigbear"
assert skyramp.get_response_value(products_POST_response, "price")==9.99
assert skyramp.get_response_value(products_POST_response, "product_id") is not None
Change Path Parameter(s)
To change the path parameter of any of the contract test cases, add path_params
to any relevant client.send_request
calls. You can specify a variable or immediately adjust the value in the request object:
# Declaration of variables
product_id = 1
# Request Body
products_product_id_PUT_request_body = r'''{
"category": "Toys",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99
}'''
# Expected Response Body
expected_products_product_id_PUT_response_body = r'''{
"category": "Toys",
"created_at": "2025-02-25T10:54:22-05:00",
"description": "Bear Soft Toy",
"image_url": "https://images.app.goo.gl/cgcHpeehRdu5osot8",
"in_stock": true,
"name": "bigbear",
"price": 9.99,
"product_id": 1,
"updated_at": "2025-02-25T10:54:22-05:00"
}'''
# Execute Request
products_product_id_PUT_response = client.send_request(
url=URL,
path="/api/v1/products/{product_id}",
method="PUT",
body=products_product_id_PUT_request_body,
headers=headers,
path_params={"product_id": product_id}
)
Change Query Parameter(s)
To change the query parameter of any of the contract test cases, add query_params
to any relevant client.send_request
calls:
products_GET_response = client.send_request(
url=URL,
path="/api/v1/products",
method="GET",
headers=headers,
query_params={
"limit": 20,
"offset": 0,
"order": "asc",
"orderBy": None
}
)