[解決済み] nose vs pytest - どちらを選ぶべきかという(主観的な)違いは何ですか?[クローズド]
質問
私は、たくさんの(ユニット)テストを含む、かなり大きな(マルチスレッドの)Pythonのプロジェクトに取り組み始めました。そこでの最も重要な問題は、アプリケーションの実行が、コンテキストマネージャによって実装されるプリセット環境を必要とするということです。これまでのところ、私たちは、このマネージャー内部でテストを実行するユニット テスト ランナーのパッチを当てたバージョンを使用しましたが、それは異なるテスト モジュール間でコンテキストを切り替えることを可能にしません。
noseとpytestの両方は、多くの粒度でのフィクスチャをサポートしているので、そのようなことをサポートしています。これらのライブラリはまた、テストの「タグ付け」をサポートし、これらのタグ付けされたサブセットのみを実行するでしょう。
私はnoseとpytestの両方のドキュメントに少し目を通しましたが、私が見る限り、これらのライブラリの大部分は、名前が異なっていたり、わずかに異なる構文を必要としたりすることを除いて、本質的に同じ機能をサポートしています。また、私は利用可能なプラグインにいくつかの小さな違いを指摘しました(noseはマルチプロセスをサポートしていますが、pytestは例えばそうではなさそうです)。
つまり、悪魔は細部に宿り、それは(少なくともしばしば)個人の好みを意味し、私たちの個人的な好みに最も合うライブラリに行く方がよいようです。
ですから、私たちのニーズに最も合うライブラリ/コミュニティの組み合わせを選択するために、なぜ私はnoseまたはpytestを使用する必要があるのか、主観的な議論をお願いしたいと思います。
どのように解決するのですか?
Pylonのデフォルトだったので、Noseを使用していました。 私はそれがまったく好きではありませんでした。 複数の場所に設定の巻き戻しがあり、事実上すべてのことは文書化されていないプラグインで行われているようで、さらに間接的でわかりにくく、デフォルトで unittest テストを行うため、Unicode トレースバックで定期的に破損し、エラー ソースが隠されていました。
私はここ数年、py.testにかなり満足しています。 でテストを書くことができることです。
assert
でテストを書けるので、テストを書くのが嫌になりました。
方法
そして、私が必要とするものを何でもコアの上にハックすることはとても簡単でした。 固定されたプラグインインターフェースではなく、フックの山を持ち、さらに掘り下げる必要があれば、かなり理解しやすいソースコードを持っています。 私は py.test の下で Testify のテストを実行するためのアダプタさえ書きました。そして py.test よりも Testify の方がより多くのトラブルを抱えていました。
とはいえ、最近はnoseにクラスレステストとアサートイントロスペクションのプラグインがあるそうなので、おそらくどちらでも大丈夫でしょう。 しかし、私はまだpy.testを使いこなすことができると感じていますし、壊れたときに何が起こっているのかを理解することができます。
関連
-
[解決済み] urllib、urllib2、urllib3、requestsモジュールの違いは何ですか?
-
[解決済み] numpyの配列と行列の違いは何ですか?どちらを使うべきですか?
-
[解決済み] jsonとsimplejsonのPythonモジュールの違いは何ですか?
-
[解決済み] pytestでは、conftest.pyのファイルはどのように使用するのですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み] 辞書のキーと値を交換するにはどうすればよいですか?
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] SQLAlchemy - テーブルのリストを取得する
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] PySparkでデータフレームのカラムをString型からDouble型に変更する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] pycharmがタブをスペースに自動変換する