問題タブ [pytest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - / testフォルダーの下のpy.testで実行している場合、「TypeError:'module'オブジェクトは呼び出し可能ではありません」
Foo
私は住んでいるクラスがありますSrc/Projects/SomeProject/Foo.py
FooTest(unittest.TestCase)
私は住んでいるクラスがあります:
pytestで実行すると(すべてのテストを実行するには、Srcで「py.test」と入力するだけです)、次のようになります。
(私はfrom Foo import Foo
にFooTest.py
ありFoo.py
、にありsys.path
ます。
しかし、Pythonで実行すると、python Src/Projects/SomeProject/tests/FooTest.py
すべてが機能します。)
また、FooTest.pyをに移動するSrc/Projects/SomeProject
と、py.testでの実行が突然機能します。
何か案は?
pytest - pytest親ディレクトリからテストを実行するときにテストディレクトリでconftest.pyの入力ファイルを見つける方法
テストディレクトリには、tests/apiやtests/sanityなどの2つのサブディレクトリがあります。tests / apiには、tests/apiディレクトリでinput.confが見つかることを期待するconftest.pyがあることに注意してください。tests/apiからテストを実行すると正常に機能することに注意してください。しかし、親ディレクトリのテストからテストを実行すると、次のように失敗しました。py.test --test_option = input.conf使用法:py.test [options] [file_or_dir] [file_or_dir] [...]
py.test:エラー:そのようなオプションはありません:-test_option
誰かが私のテストをどのように構成してこれが機能するかを教えてもらえますか?また、次のようなテストディレクトリを指定しようとしましたが、input.confが見つかりません。py.test --test_option = input.conf api / test_api.py
E IOError:[Errno 2]そのようなファイルまたはディレクトリはありません:'input.conf'
optparse - py.test 同じディレクトリ構造内では、同じオプション名の pytest_addoption を持つことはできません
次のテスト ディレクトリ構造があり、それぞれに独自の conftest.py があります。
conftest.py では、pytest_addoption に test_option と同じオプション エントリがあります。
parser.addoption("--test_option", dest="test_option", type="string", help="test_option")
tests/api/newapi で py.test を実行すると、次のエラーが発生します。
optparse.OptionConflictError: オプション --test_option: 競合するオプション文字列: --test_option
ただし、tests/api または tests または tests/sanity で py.test を実行すると問題なく動作します。親ディレクトリに同じオプション名がある場合、新しいオプション名を考え出す必要があるのは仕様によるものですか?
問題のオプションはテストで同じ目的を果たすため、命名規則を同じに保つことができることを望んでいました。その意図は、テストが開始されたディレクトリに応じて、テストの詳細レベルを変えることです。
python - 分離されたプロセスを使用したnose2とpy.test
私たちは、ユニットテストの実行と収集にnosetestを使用しています(これらはすべて、私たちが気に入っているpythonユニットテストとして書かれています)。鼻の好きなところ:
- 標準の python 単体テストを使用します (これが課す構造が気に入っています)。
- xml でのレポート カバレッジとテスト出力をサポートします (jenkins 用)。
私たちが欠けているのは、適切なエラー レポートを維持しながら、分離されたプロセスでテストを実行するための優れた方法です (Python を使用して C++ ライブラリをテストしているため、セグメンテーション違反は壊滅的なものではありません)。ノーズパイプはもうメンテナンスされていないようで、いくつか問題があります。
私たちは、nospipe を修正/使用するか、nose2 に切り替えて、nosepipe2 を書くべきかを検討しています。- pytest またはその他のテスト フレームワークを使用します。
良いコミュニティでのアプローチを使用することをお勧めします。私たちの問題 (適切な分離を必要とする C++ プラグイン) は一般的な問題のようですが、Google で調べても、維持されている解決策は見つかりませんでした。経験豊富なヘッドからのアドバイスをいただければ幸いです。
python - モックで読み取り専用プロパティをモックする方法は?
mock を使用して読み取り専用プロパティをモックするにはどうすればよいですか?
私は試した:
しかし問題は、それがクラスのすべてのインスタンスに適用されることです...これは私のテストを壊します。
他に何か考えはありますか?オブジェクト全体をモックするのではなく、この特定のプロパティのみをモックします。
cython - cython モジュールで pytest.raises(AssertionError) が失敗する
ファイル python_assert.py と cython_assert.pyx を同一になるように定義し、それぞれに AssertionError を発生させる単純な関数を含めます。
次の両方のテストが pytest で成功することを期待します。
ただし、cython テストは失敗します。
同等の単体テストが成功するため、これは pytest の問題のようです。
pytest.raises(Exception)
さらに、 の代わりにを呼び出すと、pytest テストは成功しpytest.raises(AssertionError)
ます。
何が間違っているのですか?
python - py.test が起動しない (EBUSY: [リソースデバイス])
エラーなしで py.test をインストールしましたがpip install -U pytest
、起動しようとするとpy.test
エラーが発生します:EBUSY: [Resource device]: listdir('C:\\Users\\Administrator\\AppData\\Local\\Application Data',)
出力は次のとおりです。
それは何でしょうか?
ありがとう
python - Python から C API を適切にテストする方法、C API はリターン コードをエラーとして返す
マイセットアップ
Python の pytest と ctypes を使用して C ライブラリの関数をテストしています。C ライブラリの各関数は組み込み Linux PCI ボード上の関数を呼び出し、C ライブラリ関数は一連のリターン コードにマップされる整数を返します。関数が成功した場合は 0 を返し、それ以外の場合は他のエラー コードを返します。
問題
このセットアップをテストする最良の方法についての洞察を探しています。基本的に、このライブラリをテストするためのベストプラクティスを見つけようとしています。例外をスローし、テスト ケースをアサートする最良の方法。私が現在使用しているテスト環境は pytest を使用しているため、切り替えるのは面倒です。
組み込み Linux ボードには状態があるため、さまざまな条件をすべてテストするために、テスト用にセットアップする必要がある多くの状態があります。したがって、理想的には、Python は、エラーが発生した場合にテストで発生するすべてのエラーをキャッチします。
現在のセットアップ
現在、C ライブラリ コードをラップする Python 関数があります。テストは Python コードを呼び出します。関数が 0 を返さない場合は、ラップしている Python 関数が例外をスローします。私は ctypes を使用して DLL の関数を呼び出しているため、すべての C 関数はいずれにせよ python によってラップされ、呼び出しが容易になり、引数の受け渡しが容易になります。
利点
- テストまたは中間テストのセットアップに問題がある場合、例外がスローされます。これにより、テスト ケースのセットアップが失敗したときに、失敗したテスト ケースのデバッグが容易になります。
短所
- 関数が成功した (0 を返す) ことをアサートしても意味がありません。関数が戻る前にエラーがスローされるからです。
特定の条件下で関数を呼び出すとエラーが発生することをテストしている場合は、テスト ケースの乱雑な try-except ブロックをラップする必要があります。
/li>
別のオプション
C ライブラリを python ライブラリでラップして、セットアップ関数の 1 つが機能しない場合に失敗をアサートするテストまで作成しないでください。
利点
- 失敗が予想される場合、C API からの戻り値が O ではないことをアサートするのは非常に簡単です。
短所
- デバッグしやすいテストを作成するには、C API への呼び出しごとに、Python テストでコードが渡されたことを確認する必要があります。それがテストのセットアップのための呼び出しであっても。これは、各テストのコード行数がほぼ 2 倍になることを意味します。(または、セットアップでエラーをキャッチできず、テストが失敗したときにのみアサートすることができませんでした。これは、テスト ケースのセットアップが失敗したときの面倒なデバッグを意味します)
誰かがこれをテストするための最良の方法についての洞察を与えることができれば、それは大歓迎です! これをテストするには、まだ検討していない他の方法がおそらくあります。
乾杯!
python - デコレータを渡すまで P.test を実行
さまざまなデータ (音楽、ビデオ) をアップロードし、サービスからメタデータを取得するいくつかのテストがあります。
したがって、 time.sleep() は非常に悪い方法です。さまざまなサーバーや状況によってシステムが過負荷になる可能性があるからです。
だから私は設定する特別なデコレータまたはパラメータを探しています。このようなもの
10 回試行してもアサートは失敗します - Exception を発生させます。
ありがとうございました。