Skip to main content

Write Django test requests using curl syntax

Project description

Django test curl

Build Status

With Django test curl, you can take your test cases and immediately try them against an actual server via the magic of copy-paste!

Django's testing tools come with a great test client you can use to simulate requests against views. Against deployed Django projects, if you want to do simple requests, you would probably use curl. If you want to use the same syntax for both, this is the package for you.

Good places to use this

This was developed to TDD recreating an existing API in Django. If you have a library of curl requests that you need to replicate, this is perfect for that. If you need a portable format to turn test cases into QA automation, this is great for that too.

Bad places to use this

If the .curl(...) syntax requires lots of string formatting, you should stick to the traditional test client. If the test case isn't copy-pastable, it's not a good fit. This also means if you use randomness to generate your requests, you'll lose that extra test coverage.

Installation

$ pip install django-test-curl

Usage

from django_test_curl import CurlClient

class SimpleTest(TestCase):
    """https://docs.djangoproject.com/en/stable/topics/testing/tools/#example"""
    def setUp(self):
        self.client = CurlClient()

    def test_details(self):
        response = self.client.curl("""
          curl http://localhost:8000/customer/details/
        """)

        self.assertEqual(response.status_code, 200)

        self.assertEqual(len(response.context['customers']), 5)

If you're using a custom Client, you can use the mixin version:

from django.test import Client
from django_test_curl import CurlClientMixin

class MyClient(CurlClientMixin, Client):
    ...

We support a subset of curl's functionality. For a full list and examples, see the tests.

  • Headers
  • GET/POST/PUT/DELETE/etc
  • HTTP basic auth

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for django-test-curl, version 0.1.2
Filename, size File type Python version Upload date Hashes
Filename, size django_test_curl-0.1.2-py3-none-any.whl (18.8 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size django-test-curl-0.1.2.tar.gz (7.6 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page