# stestr（日本語訳）

- 他の言語で読む場合はこちら: English, 日本語
- フルレンダリングされたドキュメントはこちら: http://stestr.readthedocs.io/en/latest/
- プロジェクトのコードは GitHub にあります: https://github.com/mtreinish/stestr

Note

stestr v2.x.x リリースシリーズは、Python 2 をサポートする最後のシリ ーズとなります。Python 2.7のサポートは「stestr リリース 3.0.0」 にて打ち切られました。

## 概要

stestr は、パラレル Python テスト実行プログラムであり、一つのテストスイート を、分割実行するために、複数プロセスを使い、 unittest テストスイートを、 実行するようデザインされています。また、実行失敗のデバッグや実行速度改善に向け たスケジューラ最適化のために、すべてのテスト実行履歴を保存しています。この目標 達成のため、stestrでは、 subunit プロトコルを使用し、ストリーミングや、 複数ワーカーからの結果を保存することを容易にしています。

stestr は、元々 testrepository プロジェクトのフォークとして始まりました。 しかし、subunit を使用する testrepository のようなあらゆるテストランナー インターフェースとなる代わりに、stestr は、python プロジェクトに特化・集中 したテストランナーです。stestr は、元々 testrepository からフォークしました が、testrepository との後方互換性はありません。高いレベルでの基本的な実行 コンセプトは、それら2つのプロジェクトの間で共有されているものの、実際の使用法 は、完全に同一というわけでありません。

## stestr のインストール

stestr は、pypi 経由で利用可能です。そのため、以下を実行するだけで:

    pip install -U stestr

あなたのシステムに、stestr を取得することができます。もし、開発バージョンの stestr を使う必要があれば、リポジトリをクローンし、ローカルにインストール することができます:

    git clone https://github.com/mtreinish/stestr.git && pip install -e stestr

この操作で、stestr をあなたの python 環境のローカル開発環境に対し、編集可能 モードでインストールできます。

## stestr の利用

stestr のインストール後、テスト実行のために使う方法は、とても簡単です。まずはじめに、 `.stestr.conf` ファイルをあなたのプロジェクトのために作成します。この ファイルは、「どこにテストがあるのか」「どうやってテストを実行する のか」という基本的な情報を stestr に伝えます。基本最小限の内容例としては次の ようなものとなります:

    [DEFAULT]
    test_path=./project_source_dir/tests

この記述は、テスト探索のために使われるディレクトリの相対パスを、stestr に伝え ます。これは、標準的な unittest discovery の `--start-directory` と 同様です。

このファイルを作成すれば、stestr を使い始めるためにやるべきことはすべて完了 です。テストを実行するためには、単に次のように使うだけです:

    stestr run

これにより、まず、結果を保持するためのリポジトリが、カレントワーキング ディレクトリの `.stestr/` に作成され、テスト探索により見つかったテストが すべて実行されます。もし、あなたが、単にひとつのテスト（あるいはモジュール）を 実行し、テスト探索によるオーバーヘッドを避けたいのであれば、`--no-discover` もしくは `-n` オプションをそのテストに対して指定し、実行することにより 可能です。

これらのコマンドの詳細は、さらなるオプションの説明は、stestr マニュアルを 参照してください: https://stestr.readthedocs.io/en/latest/MANUAL.html

## testrepository からの移行

もし、testrepository を既に使用しているプロジェクトを持っているのであれば、 stestr のソースリポジトリには、あなたのリポジトリを stestr を利用するように 移行するための、ヘルパースクリプトがあります。このスクリプトは、単に、 `.testr.conf` ファイルから、 `.stestr.conf` ファイルを作成します。 （標準的な subunit.run テストコマンド形式を利用していることを想定しています） これを実行するためには、あなたのプロジェクトリポジトリで、以下を実行します:

    $STESTR_SOURCE_DIR/tools/testr_to_stestr.py

これにより、 `.stestr.conf` が作成されます。

## manpage の生成

stestr マニュアルは、htmlと同様に、manpage としてもレンダリングするために整形 されています。html 出力物と自動生成され公開されているものはこちらです: https://stestr.readthedocs.io/en/latest/MANUAL.html しかしながら、その manpage は、手動で生成する必要があります。このためには、手動で sphinx-build コマンドを manpage builder とともに実行する必要があります。これは、簡単なスクリプトで 自動化されており、 stestr リポジトリのルートディレクトリで以下を実行します:

    tools/build_manpage.sh

これにより、troff ファイルが doc/build/man/stestr.1 に作成され、それは、 パッケージ可能で、あなたのシステムの man page としても配置可能です。

## コントリビューション方法

最新コードの参照: https://github.com/mtreinish/stestr 最新コードのクローン: `git clone https://github.com/mtreinish/stestr.git`

コントリビューションのガイドラインドキュメント: http://stestr.readthedocs.io/en/latest/developer_guidelines.html

パッチを出すためには、github pull requests を使用してください。 プルリクエストを出す前には、手元の環境で `tox` を実行して、すべての自動 テストがパスすることを確認してください。これは、CI環境で実行されるものと同様の テストスイートならびに、自動スタイルチェックを実行します。もし、あなたの変更に より、CI が fail となった場合、その変更はマージすることができません。

## コミュニティ

GitHub でのやり取りに加え、stestr の IRC チャネルもあります:

Freenode の #stestr チャネル

stestr に関する質問、もしくは議論をしていますので、気軽に参加してください。