2017-05-04 94 views
2

我成功實施了pytest掛鉤,但是,現在所有測試都正在運行多次。Pytest掛鉤導致多次運行測試

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 

當我刪除鉤,每個測試運行一次:

以我根文件夾我以激活鉤添加以下代碼以conftest.py

如何在使用掛鉤時使測試運行一次?

回答

1

看起來在測試過程(即拆卸,調用,設置)期間多次調用pytest_report_teststatus鉤子。

我在塊的開頭添加了一個條件語句來檢測掛鉤何時被調用,並且只返回一次值。

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'解決了這個問題。