Giter Site home page Giter Site logo

webunit2's Introduction

webunit2 is a spiritual successor to Richard Jones' webunit, but is by no means a fork. This library has been built from the ground up, complete with documentation and testing. It's also hosted on GitHub, making it a cinch to fork.

Documentation

Documentation is available on PyPi..

You can also build the documentation yourself. Make sure Sphinx is installed by running:

$ easy_install -U sphinx

Then, clone the repository, cd into it, and run:

$ python setup.py build_sphinx

Documentation is available in build/sphinx/html.

Getting Started

Getting started is really, really easy. All you need to do is implement webunit2.testcase.Testcase and start writing unit tests.

import webunit2

class TestMyApp(webunit2.TestCase):

    def __init__(self):
        # You aren't required to initialize the base class here, but it
        # makes dealing with subsequent requests easier--because they can
        # be relative paths!
        webunit2.TestCase.__init__(self, "http://myapp.com")

    def test_some_url(self):
        # Just do a normal get
        self.get('/somepath')

        # Lets post some data
        self.post('/somepath', post_params={"key": "value"})

        # No helper function for your HTTP method?  No problem!
        self.make_request("HEAD", "/somepath")

Of course, because this is a unit testing framework, you'll probably be making a lot of assertions--especially in content. That's easy too!

def test_for_content(self):
    # Assert the word `hippo` appears in the content.
    self.get_assertContent('/something', content="hippo")
    # Assert that the `X-Customheader` header was set.
    self.get_assertHeader('/something', 'X-Customheader')

If either of these fail (i.e., the return code is not 200 or the content does not contain hippo), an AssertionError is raised as normal. And of course, if you need to check for multiple values on the response, the same assert* functions are available directly on the response. For example, the above could be rewritten as:

def test_for_content_resp(self):
    resp = self.get('/something')
    # Assert the word `hippo` appears in the content.
    resp.assertContent("hippo")
    # Assert that the `X-Customheader` header was set.
    resp.assertHeader('X-Customheader')

This also allows you to chain many more assertions together--i.e., checking for headers, cookies, etc.. These were all designed to make testing easier, so if you have suggestions or complaints...

Contributing

The source code is hosted on Github, which makes it a cinch to fork and contribute. Please submit issues using the GitHub tracker! I love getting feedback, and I urge you to file tickets for features and/or bugs.

webunit2's People

Contributors

amcfague avatar p avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

edkurowski p

webunit2's Issues

Add ability to parse pages

Currently, frameworks like webunit currently have the ability to parse through returned HTML, and verifying content. Wrapping this with something like mechanize should be trivial. Plus, this would also open up the ability to use other types--for example, JSON objects.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.