proboscis

Software Screenshot:
proboscis
Software Details:
Version: 1.2.5.3
Upload Date: 20 Feb 15
Developer: Rackspace
Distribution Type: Freeware
Downloads: 4

Rating: nan/5 (Total Votes: 0)

proboscis is a Nose extension that facilitates higher level testing.

Changes how test classes are discovered by forcing them to register via decorators which contain useful metadata such as what groups they are in, whether or not they have dependencies on other tests, and if they should be ignored.

Proboscis sorts all registered tests into the desired run order then constructs a test suite which it passes to Nose. It can also filter this list so that it's possible to specify which groups of tests you wish to run without passing in the exact test classes. At runtime, tests which depend on other tests that have failed are automatically marked as skipped.

Much of this functionality was "inspired" by TestNG. If you're coming from that framework, the main features Proboscis currently offers are dependent test ordering (currently limited to the class level) and the ability to arrange your tests into groups independent of the structure of their modules or packages.

With Proboscis it's possible to write tests which depend on a web service (or some other dependency you'd like to only initialize once) like this:

@test(groups=["service.tests"], depends_on_groups=["service.initialization"])
    class WhenConnectingAsAdmin(unittest.TestCase):

        def test_change_profile_image(self):
            self.client = mymodule.ServiceClient(service_config)
            self.assertEquals("default.jpg", self.client.get_profile_image())
            self.client.set_profile_image("spam.jpg")
            self.assertEquals("spam.jpg", self.client.get_profile_image())


Then write the code to start and cleanly shut down that web service in any other module as a first class test itself:

@test(groups=["service.initialization"])
    class StartWebServer(unittest.TestCase):

        def test_start(self):
            # Start up web server, then issues a connect.
            mymodule.start_web_server()
            client = mymodule.ServiceClient(service_config)
            self.assertTrue(client.service_is_up)

    @test(groups=["service.shutdown"], \
          depends_on_groups=["service.initialization", "service.tests"], \
          never_skip=True)
    class StopService(unittest.TestCase):

        def test_stop(self):
            client = mymodule.ServiceClient(service_config)
            if client.service_is_up:
                mymodule.stop_web_server()
                self.assertFalse(client.service_is_up())


Using Proboscis you can rest assured the tests will execute in the desired order even if you add more test classes, change their name, or move them to different modules.

Requirements:

  • Python
  • nose

Similar Software

KOJAK
KOJAK

12 May 15

TestManager
TestManager

20 Feb 15

nose-cprof
nose-cprof

20 Feb 15

ESC/Java2
ESC/Java2

3 Jun 15

Other Software of Developer Rackspace

CloudFS
CloudFS

14 Dec 14

Mosso
Mosso

14 Dec 14

Comments to proboscis

Comments not found
Add Comment
Turn on images!