python
  • python-3.x
  • unit-testing
  • hook
  • py.test
  • 2017-05-04 7 views 2 likes 
    2

    pytestフックを正常に実装しましたが、すべてのテストが複数回実行されるようになりました。私のルートフォルダにPytestフックによりテストが複数回実行される

    私はフックを活性化するためにconftest.pyに次のコードを追加しました:

    def pytest_report_teststatus(report): 
        if report.passed: 
         letter = "." 
         longrep = ' \u2714 ' 
        elif report.skipped: 
         letter = "s" 
         longrep = ' \u27A5 ' 
        elif report.failed: 
         letter = "F" 
         longrep = ' \u2717 ' 
         if report.when != "call": 
          letter = "f" 
        return report.outcome, letter, report.outcome.upper() + longrep 
    

    私はフックを削除すると、各テストが一度に実行されます。

    フックの使用中にテストを一度実行させるにはどうすればよいですか?

    答えて

    1

    試験プロセス中にpytest_report_teststatusフックが複数回呼び出されたと思われます。(つまり、teardown、call、setup)です。

    ブロックの先頭に条件文を追加して、フックがコールされたときを検出し、戻り値を1回だけ検出しました。

    def pytest_report_teststatus(report): 
        if report.when == 'call': # <-- Added this line 
         if report.passed: 
          letter = '.' 
          longrep = ' \u2714 ' 
         elif report.skipped: 
          letter = 's' 
          longrep = ' \u27A5 ' 
         elif report.failed: 
          letter = 'F' 
          longrep = ' \u2717 ' 
         return report.outcome, letter, report.outcome.upper() + longrep 
    

    if report.when == 'call'を追加することで問題が解決されました。

    関連する問題