私はPythonでWebアプリケーションを作成しており、レタスとスプリンターを使用して受け入れテストを作成しています。
これを行うには、アプリケーションをテスト スイートで使用できるように、アプリケーションをバックグラウンドで起動する wsgi サーバーを取得する必要があります。これを行うために、別のスレッドでウェイトレス サーバー インスタンスを起動して、ブラウザーが次の場所に接続するようにしました。
def setUp():
base = os.path.dirname(__file__) + "/../../.."
world.app = loadapp('config:test.ini', relative_to=base)
world.server_thread = thread.start_new_thread(serve_app, (world.app,))
def serve_app(app):
serve(app, host='0.0.0.0', port=7654)
これは非常にうまく機能します。実行中のアプリケーション インスタンスは、フィクスチャやモックなどをセットアップするためにテスト スイートで使用でき、サーバーはテストが接続するために使用できます。ただし、テストが終了すると、サーバーに信号を送信してサーバーを完全にシャットダウンする方法がありません。したがって、とにかく、私がKeyboardInterrupt
生成したサーバースレッドに送信することができますか(ウェイトレスによってキャッチされ、きれいにシャットダウンするように促されます)、またはそれが失敗した場合、非ブロッキングを公開する既存の wsgi サーバー実装がありますかウェイトレスの代わりに採用できる方法はstart()
ありますか?stop()