This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

Introduction

DjangoLibrary is a web testing library to test Django with Robot Framework. It uses Selenium2Library to run tests against a real browser instance.

The library will automatically start and stop your Django instance while running the tests. It also comes with serveral autologin keywords that allow you to login different users during your tests, without the need to actually access the login page.

DjangoLibrary is tested against Django 1.8.x and 1.9.x with SQLite and Postgres on Python 2.7 and 3.5.

Installation

Install robotframework-djangolibrary with pip:

$ pip install robotframework-djangolibrary

In order to be able to use DjangoLibrary’s Autologin, FactoryBoy, or QuerySet keywords you have to add the corresponding middleware classes to your MIDDLEWARE_CLASSES in yoursettings.py:

MIDDLEWARE_CLASSES = (
    ...
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'DjangoLibrary.middleware.AutologinAuthenticationMiddleware',
    'DjangoLibrary.middleware.FactoryBoyMiddleware',
    'DjangoLibrary.middleware.QuerySetMiddleware',
)

!DANGER!

Make sure that you add those middlewares only to your test setup and NEVER to your deployment! The Autologin middleware just checks for a ‘autologin’ cookie and then authenticates and login ANY user.

First Robot Test

In order to write your first robot test, make sure that you include Selenium2Library and DjangoLibrary. Create a test.robot file with the following content:

*** Variables ***

${HOSTNAME}             127.0.0.1
${PORT}                 55001
${SERVER}               http://${HOSTNAME}:${PORT}/
${BROWSER}              firefox


*** Settings ***

Documentation   Django Robot Tests
Library         Selenium2Library  timeout=10  implicit_wait=0
Library         DjangoLibrary  ${HOSTNAME}  ${PORT}  path=mysite/mysite  manage=mysite/manage.py  settings=mysite.settings  db=mysite/db.sqlite3
Suite Setup     Start Django and open Browser
Suite Teardown  Stop Django and close Browser


*** Keywords ***

Start Django and open Browser
  Start Django
  Open Browser  ${SERVER}  ${BROWSER}

Stop Django and close browser
  Close Browser
  Stop Django


*** Test Cases ***

Scenario: As a visitor I can visit the django default page
  Go To  ${SERVER}
  Wait until page contains element  id=explanation
  Page Should Contain  It worked!
  Page Should Contain  Congratulations on your first Django-powered page.

Support

If you are having issues, please let us know. If you require professional support feel free to contact us at info@kitconcept.com.

Run Tests

Then you can run the test with pybot:

$ pybot test.robot

The output should look like this:

==============================================================================
Test :: Django Robot Tests
==============================================================================
Scenario: As a visitor I can visit the django default page            | PASS |
------------------------------------------------------------------------------
Test :: Django Robot Tests                                            | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Output:  /home/timo/workspace/prounix/robotframework-djangolibrary/output.xml
Log:     /home/timo/workspace/prounix/robotframework-djangolibrary/log.html
Report:  /home/timo/workspace/prounix/robotframework-djangolibrary/report.html

Test Isolation

robotframework-djangolibrary does not provide isolation between tests by default. This means if you add an object to the database in a test, this object will be present in the next test as well. You need to cleanup yourself in order to have a proper isolation between the tests. You can use the robotframework “Test Teardown” call to call the “Clear DB” keyword after each test:

*** Settings ***

Library         Selenium2Library  timeout=10  implicit_wait=0
Library         DjangoLibrary  ${HOSTNAME}  ${PORT}  path=mysite/mysite  manage=mysite/manage.py  settings=mysite.settings  db=mysite/db.sqlite3
Suite Setup     Start Django and open Browser
Suite Teardown  Stop Django and close Browser
Test Teardown   Clear DB

Development

Checkout repository from github:

$ git clone https://github.com/kitconcept/robotframework-djangolibrary.git

Create a virtual Python environment:

$ cd robotframework-djangolibrary/
$ virtualenv .py27
$ source .py27/bin/activate

Install robotframework-djangolibrary in development mode:

$ python setup.py develop

Install the requirements:

$ pip install -r requirements.txt

Run Unit/Integration-Tests:

$ pytest mysite/

Run Acceptance Tests:

$ pybot DjangoLibrary/tests/

1.2 (2016-07-08)

New Features:

  • Make Factory Boy keyword return ‘pk’ attribute. [timo]

1.1 (2016-07-07)

New Features:

  • Add QuerySet keyword. [timo]
  • Make it possible to override subfactories when using the FactoryBoy keyword. [timo]

Bugfixes:

  • Use Django’s model_to_dict method to serialize the response objects for the factory_boy keyword. [timo]

1.0 (2016-06-30)

  • Re-release 1.0a6 as 1.0. [timo]

1.0a6 (2016-04-29)

New Features:

  • Python 3 compatibility. Note that the latest offical release of robotframework-selenium2library is currently not compatible with Python 3. See https://github.com/HelioGuilherme66/robotframework-selenium2library/releases for a working pre-release and details. [timo]
  • Support for Postgres added. All Django database backends should work. We test SQLite and Postgres only though. [timo]
  • Add ‘Factory Boy’ keyword. This allows us to use factory_boy factories in Robot Framework tests. [timo]

Breaking Changes:

  • Drop Django 1.7.x support. We test and support Django 1.8.x and 1.9.x. [timo]
  • Change ‘Clear DB’ implementation to use “python manage.py flush” instead of deleting and re-building the database. [timo]
  • Remove ‘Debug’ and ‘Pause’ keywords. The ‘Debug’ keyword, which is provided by robotframework-debuglibrary is sufficient. [timo]

1.0a5 (2016-02-11)

  • Make middleware part Python 3 compatible.

    robotframework-djangolibrary is still not compatible with Python 3 because robotframework-selenium2library does not work with Python 3 yet. Though, you can install robotframwork-djangolibrary on Python 3 with “pip install robotframework-djangolibrary –no-deps” and then run your tests with Python 2.7. [timo]

  • Add ‘Framework :: Robot Framework’ classifier to setup.py. [timo]

1.0a4 (2016-02-05)

  • Use ‘migrate’ instead of ‘syncdb’ for Django > 1.7.x. [timo]

1.0a3 (2015-09-28)

  • Add list_classifiers to setup.py. [timo]
  • Fix user creation and startup. This fixes #3. [MatthewWilkes]

1.0a2 (2015-06-25)

  • Remove Django and zest.releaser from requirements.txt. This fixes #2. [timo]

1.0a1 (2015-06-24)

  • Initial release. [timo]
Release History

Release History

1.2

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0a6

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0a5

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0a4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0a3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0a2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0a1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
robotframework-djangolibrary-1.2.tar.gz (58.2 kB) Copy SHA256 Checksum SHA256 Source Jul 8, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting