diff --git a/README.md b/README.md index 2c7bb3b..101d8d1 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,52 @@ -Django-Pyvows -============= +# Django-PyVows +This project is an extension of pyVows to test [Django](https://www.djangoproject.com/) projects. It enables usage of core Django testing tools in a way that is in sync with pyVows workflow mindset. -Pyvows -------- +PyVows is a BDD (Behaviour Driven Development) inspired by Vows for node.js -pyvows is a BDD (Behaviour Driven Development) inspired by Vows for node.js +More documentation about pyVows can be found at [the project homepage](http://pyvows.org) or for mode updated usage check the project [tests itself](https://github.com/heynemann/pyvows/tree/master/tests). -More documentation about pyvows can be found at the project homepage +Django-PyVows is in sync with the latest Django developments and supports Django 1.8. -http://pyvows.org +## Usage -Django-Pyvows --------------- - -This project contains extensions to test Django projects under pyVows. - -Using Django-Pyvows -------------------- - -There is no need to modify your project to use Django-PyVows. You only have to create the vows -as you usually would, start the server and call your project urls: +There is no need to modify your project to use Django-PyVows. You only have to define where is your project settings module and start calling your project urls in your tests. ```python from pyvows import Vows, expect -from django_pyvows.context import DjangoHTTPContext +from django_pyvows.context import DjangoContext @Vows.batch -class ContextTest(DjangoHTTPContext): +class SimpleTestVows(DjangoContext): - def setup(self): - self.start_server() + def settings_module(self): + return 'yourproject.settings' def topic(self): return self.get('/mygreaturl/') def should_be_a_success(self, topic): - expect(topic.getcode()).to_equal(200) + expect(topic.status_code).to_equal(200) def should_return_the_correct_response_type(self, topic): - expect(topic.headers.type).to_equal("text/html") + expect(topic).contains("Welcome!") ``` -To work you only need to override the `get_settings` method from DjangoHTTPContext to -return the path of your settings module. The default `get_settings` returns `"settings"`. +The default `settings_module` is `settings` so you should define it accordly based on your `PYTHONPATH`. -More info: https://github.com/rafaelcaricio/django-pyvows/wiki +### HTTP Client -External links --------------- -- Asynchronous Testing with Django and PyVows - - http://www.realpython.com/blog/python/asynchronous-testing-with-django-and-pyvows/ -- Unit Testing with pyVows and Django - - http://www.realpython.com/blog/python/unit-testing-with-pyvows-and-django/ -- Integration testing with pyVows and Django - - http://www.realpython.com/blog/python/integration-testing-with-pyvows-and-django/ +We support `django.test.Client`, the methods `DjangoContext.get` and `DjangoContext.post` are actually simple wrappers around it so [the usage](https://docs.djangoproject.com/en/1.8/topics/testing/tools/#the-test-client) is the same. + +### Assertions + +The available assertions in Django-PyVows are the same as in `django.test.SimpleTestCase` they were adapted to the context of BDD and PyVows. + +- `contains`: reflects the `django.test.SimpleTestCase.assertContains`. Check usage at: [https://docs.djangoproject.com/en/1.8/topics/testing/tools/#django.test.SimpleTestCase.assertContains](https://docs.djangoproject.com/en/1.8/topics/testing/tools/#django.test.SimpleTestCase.assertContains) +- `redirects_to`: reflects the `django.test.SimpleTestCase.assertRedirects`. Check usage at: [https://docs.djangoproject.com/en/1.8/topics/testing/tools/#django.test.SimpleTestCase.assertRedirects](https://docs.djangoproject.com/en/1.8/topics/testing/tools/#django.test.SimpleTestCase.assertRedirects) +- `with_form_error`: reflects the `django.test.SimpleTestCase.assertFormError`. Check usage at: [https://docs.djangoproject.com/en/1.8/topics/testing/tools/#django.test.SimpleTestCase.assertFormError](https://docs.djangoproject.com/en/1.8/topics/testing/tools/#django.test.SimpleTestCase.assertFormError) + +### Settings Override + +TODO \ No newline at end of file