Rest-Framework-Smoke
Smoke tests for API built with Django Rest Framework.
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_schemaget_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)
| File | Size | Uploaded | |
|---|---|---|---|
| rest-framework-smoke-0.9.0.tar.gz | 12.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|