15

SeleniumとPYTESTを使用してサイトをテストしています。テストが失敗したときはいつでも(そして失敗したときだけ)、ページのスクリーンショットを撮りたいと思います。

これを行う方法はありますか?これに関しては、ドキュメントは静かです(または私はそれを見つけることができません)。私はそれが次のようなものになると思います

request.function.failed

そしてそれはブール値か何かを返すでしょう。

これが私がやりたかったことです:

@pytest.fixture()
def something(request):
    if request.function.failed:
        print "I failed"

もちろん、これはファイナライザーに追加されます。できますか?pytest2.3.3の使用

ありがとう。

4

2 に答える 2

12

それは直接ではなく、行うことができます。ドキュメントに例を追加しました。これをデフォルトで簡単にすること、つまりconftest.pyフックを使用せずに行うことはおそらく理にかなっています。同意する場合は、問題を提出してください。

于 2012-11-14T08:25:32.183 に答える
7

モジュールごとのレベルで同様のことをしなければなりませんでした。既存のソリューションを調べた後、私はそれらの複雑さに少し驚いた。この問題に対処するために私が思いついたアプローチは次のとおりです。

import pytest


@pytest.fixture(scope="module", autouse=True)
def failure_tracking_fixture(request):
    tests_failed_before_module = request.session.testsfailed
    yield
    tests_failed_during_module = request.session.testsfailed - tests_failed_before_module

フィクスチャを機能レベルのものにすることで、必要な操作を行うように調整できます。

お役に立てれば!

于 2017-04-07T01:14:44.257 に答える