Skip to main content

Rest-Framework-Smoke

Smoke tests for API built with Django Rest Framework.

build codecov PyPI version

Installation

pip install rest-framework-smoke

Usage

Full example located at testproject.testapp.tests

from rest_framework.test import APITestCase

from rest_framework_smoke.tests.mixins import ReadOnlyViewSetTestsMixin
from rest_framework_smoke.tests.schemas import get_object_schema
from testproject.testapp import models

TASK_SCHEMA = {
    "id": {"type": ["number"]},
    "name": {"type": ["string"]},
}

PROJECT_SCHEMA = {
    "id": {"type": ["number"]},
    "name": {"type": ["string"]},
    "task_set": {
        "type": ["array"],
        "minItems": 1,
        "items": get_object_schema(TASK_SCHEMA)
    }
}


class ProjectViewSetTestCase(ReadOnlyViewSetTestsMixin, APITestCase):
    object_name = 'project'
    basename = 'projects'
    schema = details_schema = PROJECT_SCHEMA
    pagination_schema = None

    @classmethod
    def setUpTestData(cls):
        cls.project = models.Project.objects.create(name='project')
        cls.task = models.Task.objects.create(name='task', project=cls.project)

Happy API testing :)

About schema checks

Rest-Framework-Smoke uses jsonschema to validate API response format. When we check format, we should pay attention to:

  • no unexpected properties are found (is so, they are not validated by schema)
  • there are no missing properties (missing properties are not validated)
  • arrays are not empty (because there is nothing to check in empty arrays)
  • all values are not null (because null values mostly are null by default, and other type variants will never appear in schema validation code)

So there are two helpers in rest_framework_smoke.tests.schemas to enforce these constraints (and they are used internally for format tests):

  • get_object_schema
  • get_array_schema

Metadata

Release files for rest-framework-smoke 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rest-framework-smoke 0.9.0
File Size Uploaded
rest-framework-smoke-0.9.0.tar.gz 12.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rest-framework-smoke 0.9.0
File Interpreter ABI Platform
rest_framework_smoke-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 23.6 kB

Release files / rest-framework-smoke-0.9.0.tar.gz

Download URL rest-framework-smoke-0.9.0.tar.gz
Size 12.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7d21df539b80f887de2e9d6cf1ab4219c2c4cd4e2ed3b3f95697df33638ed065
BLAKE2b-256 checksum
How to use checksums
19c017d810c2e7f9c509cd2e4f600cbd284e5094567868af8ccee007100f8ec8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.6

Release files / rest_framework_smoke-0.9.0-py3-none-any.whl

Download URL rest_framework_smoke-0.9.0-py3-none-any.whl
Size 11.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fa180cc2547bc23f92cfe719baa1df398387dd4d96d598a13a98b53345f14225
BLAKE2b-256 checksum
How to use checksums
60c2ee84d02019568600a10e37280eb6077c805f0d8c16768967425ddaea209d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.6

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

1 release file

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.4

2 release files

0.0.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page