You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
974 B
Python
37 lines
974 B
Python
from http.server import BaseHTTPRequestHandler, HTTPServer
|
|
import socket
|
|
from threading import Thread
|
|
|
|
import pytest
|
|
import requests
|
|
|
|
|
|
|
|
class MockServerRequestHandler(BaseHTTPRequestHandler):
|
|
def do_GET(self):
|
|
self.send_response(requests.codes.ok)
|
|
self.end_headers()
|
|
return
|
|
|
|
|
|
def get_free_port():
|
|
"""Simple function that acquires a port, closes it, and returns what that port numnber was"""
|
|
s = socket.socket(socket.AF_INET, type=socket.SOCK_STREAM)
|
|
s.bind(('localhost', 0))
|
|
address, port = s.getsockname()
|
|
s.close()
|
|
return port
|
|
|
|
# TODO determine what scope this fixture should have
|
|
@pytest.fixture
|
|
def mockserver():
|
|
# Setup
|
|
mock_server_port = get_free_port()
|
|
mock_server = HTTPServer(('localhost', mock_server_port), MockServerRequestHandler)
|
|
mock_server_thread = Thread(target=mock_server.serve_forever)
|
|
mock_server_thread.setDaemon(True)
|
|
mock_server_thread.start()
|
|
|
|
return mock_server_port
|
|
|