Reputation: 4552
I'm using nose and I need to start an HTTP server for a test. I'm starting it in the setup function, and stopping it in the teardown function like this:
from my_service import MyClient, MyServer
def setup():
global server
server = MyServer()
server.start()
def teardown():
server.stop()
def test_client():
client = MyClient('localhost', server.port)
assert client.get_colour() == "blue"
Is there a more elegant way to have the server object available to teardown function and tests other than this global variable? Perhaps a value returned from setup which would be passed as an argument to tests and teardown?
Upvotes: 1
Views: 425
Reputation: 6567
Have you considered unittest? It does exist for this reason, and nose will work with it nicely:
import unittest
class MyLiveServerTest(unittest.TestCase):
def setUp(self):
self.server = MyServer()
self.server.start()
def test_client(self):
client = MyClient('localhost', self.server.port)
assert client.get_colour() == "blue"
def tearDown(self):
self.server.stop()
Upvotes: 2