タグ付けされた質問 「pytest」

Pythonによるシンプルで強力なボイラープレートテスト。`pytest`でタグ付けされた質問には、` python`タグも追加してください。

9
pytestの実行中に作成された通常の印刷出力を確認するにはどうすればよいですか?
コードにいくつかの印刷ステートメントを挿入し、それを実行すると何が印刷されるかを確認したい場合があります。既存のpytestテストでそれを「実行」するための私の通常の方法です。しかし、これらを実行すると、標準出力が表示されないようです(少なくとも、私のIDE、PyCharm内から)。 pytestの実行中に標準出力を確認する簡単な方法はありますか?
400 python  logging  output  pytest 

9
pytestで例外が発生したことを適切に表明するにはどうすればよいですか?
コード: # coding=utf-8 import pytest def whatever(): return 9/0 def test_whatever(): try: whatever() except ZeroDivisionError as exc: pytest.fail(exc, pytrace=True) 出力: ================================ test session starts ================================= platform linux2 -- Python 2.7.3 -- py-1.4.20 -- pytest-2.5.2 plugins: django, cov collected 1 items pytest_test.py F ====================================== FAILURES ====================================== ___________________________________ test_whatever ____________________________________ def test_whatever(): …

18
pytestのPATH問題「ImportError:YadaYadaYadaという名前のモジュールはありません」
easy_installを使用してMacにpytestをインストールし、次のようなファイル構造を持つプロジェクトのテストの作成を開始しました。 repo/ repo/app.py repo/settings.py repo/models.py repo/tests/ repo/tests/test_app.py py.testrepoディレクトリで実行すると、すべてが期待どおりに動作します しかし、LinuxまたはWindows(どちらもpytest 2.2.3がインストールされています)で同じことを試みると、アプリケーションパスから何かの最初のインポートにヒットするたびに吠えます。たとえば言うfrom app import some_def_in_app これらのシステムでpy.testを実行するには、PATHを編集する必要がありますか?誰かがこれを経験しましたか?

3
pytestでは、conftest.pyファイルの用途は何ですか?
私は最近発見しましたpytest。それは素晴らしいようです。ただし、ドキュメントの方が良いと思います。 どのconftest.pyファイルが使用されるのかを理解しようとしています。 私の(現在は小さい)テストスイートconftest.pyでは、プロジェクトルートに1つのファイルがあります。私はそれを使用して、テストに注入するフィクスチャを定義します。 2つの質問があります。 これは正しい使い方conftest.pyですか?他の用途はありますか? 複数のconftest.pyファイルを作成できますか?いつそれをしたいですか?例は高く評価されます。 より一般的にconftest.pyは、py.testテストスイートでファイルの目的と正しい使用法をどのように定義しますか?
216 python  testing  pytest 

8
ファイルから実行するpytestテストを指定する方法はありますか?
pytestファイルから実行するテストを選択する方法はありますか?たとえば、foo.txt実行するテストのリストを含むファイル: tests_directory/foo.py::test_001 tests_directory/bar.py::test_some_other_test または、pytestの異なるディレクトリから、テスト名に共通のパターンがない複数のテストを選択する方法はありますか? pytest -k <pattern> 単一のパターンを許可します。 1つのオプションは、 pytest.mark各テストに対してことですが、私の要件は、異なるファイルから異なる組み合わせのテストを実行することです。 複数のパターンと各パターンのテストファイル名を指定する方法はありますか? または ファイルに正確なテストパスを指定し、そのファイルを入力としてフィードする方法はありますか pytestか? または この目的で利用できるフック関数はありますか?
190 python  pytest 

6
pytestでコンソールに出力する方法は?
でTDD(テスト駆動開発)を使用しようとしていますpytest。 私が使用するときにコンソールにpytestはありません。printprint 私はpytest my_tests.pyそれを実行するために使用しています。 はdocumentationデフォルトで動作するはずだと言っているようです:http : //pytest.org/latest/capture.html だが: import myapplication as tum class TestBlogger: @classmethod def setup_class(self): self.user = "alice" self.b = tum.Blogger(self.user) print "This should be printed, but it won't be!" def test_inherit(self): assert issubclass(tum.Blogger, tum.Site) links = self.b.get_links(posts) print len(links) # This won't print either. 標準出力コンソールには何も出力されません(通常の進行状況と、合格/不合格となったテストの数だけ)。 そして、私がテストしているスクリプトにはprintが含まれています。 class …

11
py.testテストを実行するようにPyCharmを構成するにはどうすればよいですか?
私のPythonコードの単体テストの作成を開始したいと思います。py.testフレームワークは、Pythonにバンドルされている単体テストよりも優れているようです。そこで、「tests」ディレクトリをプロジェクトに追加し、それにtest_sample.pyを追加しました。ここで、「tests」ディレクトリ内のすべてのテストを実行するようにPyCharmを構成したいと思います。 PyCharm は、そのテストランナーでpy.testをサポートしているとされています。テストを実行するための実行/デバッグ構成を作成できるはずですが、PyCharmにはpy.test専用の「構成の作成」ダイアログボックスがあるとされています。しかし、それはその主題に関する彼らの文書の完全な範囲であり、この疑わしいダイアログボックスはどこにも見つかりません。 プロジェクトツールウィンドウでディレクトリを右クリックすると、[ <name>の作成]メニュー項目が表示されるはずですが、[作成]で始まるメニュー項目は[実行構成の作成]のみです。さて、おそらくドキュメントが間違っているだけで、「実行構成の作成」は有望に聞こえます。残念ながら、サブメニューの2つの項目は「Unittests in C:\ mypath ...」と「Doctests in C:\ mypath ...」だけです。どちらも当てはまりません。私はunittestもdoctestも使用していません。py.testのメニュー項目はありません。 test_sample.pyを開いてエディターウィンドウで右クリックすると、約束された[Create <name>]メニュー項目が表示されます。「Create 'Unittests in test_sa ...'...」の後に「Run 「test_saのユニットテスト...」および「test_saのユニットテストのデバッグ」。繰り返しになりますが、これはすべてユニットテストフレームワークに固有のものです。py.testには何もありません。 「unittest」というメニュー項目を試してみると、「名前」、「タイプ」、「フォルダ」、「パターン」、「スクリプト」、「クラス」の「テスト」グループボックスのオプションを含むダイアログボックスが表示されます。 "や" Function "など。これは、Pythonユニットテストの構成を追加するためのダイアログとして文書化されているものとまったく同じように聞こえます。py.testダイアログの設定で。追加するテストフレームワークを切り替えるダイアログ内には何もありません。 WindowsでPython 3.1.3およびpytest 2.0.3を使用してPyCharm 1.5.2を使用しています。py.testコマンドラインからテストを正常に実行できるため、pytestが適切にインストールされていないなど、単純なことではありません。 py.testテストを実行するようにPyCharmを構成するにはどうすればよいですか?
162 python  pycharm  pytest 

7
pytest:ほぼ等しいと主張する
assert almost equal次のようなものに頼らずにフロートのpy.testを使用する方法: assert x - 0.00001 <= y <= x + 0.00001 より具体的には、フロートのペアをアンパックせずにすばやく比較するためのきちんとしたソリューションを知っていると便利です。 assert (1.32, 2.4) == i_return_tuple_of_two_floats()

2
テストの実行時間を出力し、py.testを使用して遅いテストをピン留めする
py.testを使用してCIサーバーで単体テストを実行しています。テストでは、ネットワーク経由で取得した外部リソースを使用します。テストランナーに時間がかかりすぎて、テストランナーが中止される場合があります。ローカルで問題を繰り返すことはできません。 py.testが(遅い)テストの実行時間を出力するようにして、問題のあるテストを簡単に特定できるようにする方法はありますか?
117 python  pytest 

6
パラメータをフィクスチャ関数に渡す
私はpy.testを使用して、PythonクラスMyTesterにラップされたDLLコードをテストしています。検証目的で、テスト中にいくつかのテストデータをログに記録し、後でさらに処理を行う必要があります。多くのtest _...ファイルがあるので、ほとんどのテストでテスターオブジェクトの作成(MyTesterのインスタンス)を再利用したいと思います。 テスターオブジェクトはDLLの変数と関数への参照を取得したオブジェクトであるため、各テストファイルのDLL変数のリストをテスターオブジェクトに渡す必要があります(ログに記録される変数はtest_ ..でも同じです。 。ファイル)。リストの内容は、指定されたデータをログに記録するために使用されます。 私の考えは、このようにすることです。 import pytest class MyTester(): def __init__(self, arg = ["var0", "var1"]): self.arg = arg # self.use_arg_to_init_logging_part() def dothis(self): print "this" def dothat(self): print "that" # located in conftest.py (because other test will reuse it) @pytest.fixture() def tester(request): """ create tester object """ # how to …
114 python  fixtures  pytest 

28
pytestはモジュールをインポートできませんが、Pythonはインポートできます
Pythonでパッケージを作成しています。私はvirtualenvを使用しています。私はvirtualenvの.pthパスでモジュールのルートへのパスを設定します。これにより、コードの開発およびテスト中にパッケージのモジュールをインポートできるようになります(質問1:これは良い方法ですか?)。これはうまくいきます(ここに例があります、これは私が望む動作です): (VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ python Python 2.7.12 (default, Jul 1 2016, 15:12:24) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from rc import ns >>> exit() (VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ python tests/test_ns.py issued command: echo hello command output: hello ただし、PyTestを使用しようとすると、いくつかのインポートエラーメッセージが表示されます。 (VEnvTestRc) zz@zz:~/Desktop/GitFolders/rc$ pytest =========================================== test session …
113 python  import  pytest 

5
テストを含むpytestクラスの設定と破棄を正しく行うにはどうすればよいですか?
エンドツーエンドのテストにセレンを使用していますが、使用方法setup_classとteardown_class方法を取得できません。 setup_classメソッドでブラウザを設定してから、クラスメソッドとして定義された一連のテストを実行し、最後にteardown_classメソッドでブラウザを終了する必要があります。 しかし、実際には私のテストはクラスではなくオブジェクトで機能するため、論理的には悪い解決策のように見えます。selfすべてのテストメソッド内でparam を渡すので、オブジェクトの変数にアクセスできます。 class TestClass: def setup_class(cls): pass def test_buttons(self, data): # self.$attribute can be used, but not cls.$attribute? pass def test_buttons2(self, data): # self.$attribute can be used, but not cls.$attribute? pass def teardown_class(cls): pass そして、クラスのブラウザインスタンスを作成するのは正しくないようです。すべてのオブジェクトに対して個別に作成する必要がありますよね。 では、__init__andの__del__代わりにsetup_classand メソッドを使用する必要がありteardown_classますか?

4
pytestテストの実行中にipdb.set_trace()を自由に実行する方法
テストスイートにpytestを使用しています。複雑なコンポーネント間テストでバグをキャッチしながらimport ipdb; ipdb.set_trace()、コードの途中に配置してデバッグできるようにしたいと考えています。 ただし、pytestはsys.stdin / sys.stdoutをトラップするため、ipdbは失敗します。pytestでテスト中にipdbを使用するにはどうすればよいですか。 障害が発生した後にpdbやipdbにジャンプすることに興味はありませんが、コードの任意の場所にブレークを配置して、障害が発生する前にそこでデバッグできるようにします。
96 pytest 

5
py.testの内部廃止警告を抑制する方法
pytestの内部非推奨の警告を抑制する方法はありますか? コンテキスト:テストスイートをからnoseに移植する難しさを評価したいと考えていpytestます。スイートはかなり大きく、noseスタイルyieldベースのテストジェネレーターを多用しています。 最初に既存のテストがpytestでパスすることを確認してから、テストジェネレーターをに変更しparameterizedます。 $ pytest path-to-test-folderpytest 3.0.4で実行するだけでは、ページと WC1 ~repos/numpy/numpy/lib/tests/test_twodim_base.py yield tests are deprecated, and scheduled to be removed in pytest 4.0 これらの警告をオフにする方法はありますか?
94 python  pytest 

2
pytestテスト内のロギング
いくつかの状態変数を調べるために、テスト関数内にいくつかのロギングステートメントを配置したいと思います。 次のコードスニペットがあります。 import pytest,os import logging logging.basicConfig(level=logging.DEBUG) mylogger = logging.getLogger() ############################################################################# def setup_module(module): ''' Setup for the entire module ''' mylogger.info('Inside Setup') # Do the actual setup stuff here pass def setup_function(func): ''' Setup for test functions ''' if func == test_one: mylogger.info(' Hurray !!') def test_one(): ''' Test One …
94 python  logging  pytest 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.