我們都知道測試用例執行失敗後,我們會送出相應缺陷到公司缺陷平台,那我們自動化測試完成了,對于執行失敗的用例,是不是也需要将失敗的用例也送出相應缺陷呢,這種肯定的。作為測試人員,送出缺陷是我們工作的必不可缺少的部分,如何測試人員不送出缺陷了,那就代表已經脫離了測試人員的職責了。
那麼在做自動化測試的時候,肯定希望如果用例執行失敗了就自動送出缺陷,這樣大大減少了人工再去送出缺陷的時間成本,那我們該怎麼做呢,我們在這裡面需要考慮一些問題。
在用例執行過程中,如何擷取用例執行狀态
如何對接缺陷系統,送出缺陷
說明:item是測試用例,call是測試步驟,具體執行過程如下:
先執行when='setup' 傳回setup 的執行結果
然後執行when='call' 傳回call 的執行結果
最後執行when='teardown'傳回teardown 的執行結果
根據源碼及使用方式,我們先嘗試使用一下:
<code>conftest.py</code>
<code>test_report.py</code>
執行 <code>pytest -v -s test_report.py</code> ,檢視結果:

從執行結果可以看出來 <code>pytest_runtest_makereport</code> 經過三個階段:<code>'when': 'setup'</code>、<code>'when': 'call'</code> 、<code>'when': 'teardown'</code>
這樣我們就可以使用屬性 <code>when</code> 和 <code>outcome</code> 來判斷用例執行結果,那我們該怎麼來使用,在哪個階段進行判斷。再看下用例存在<code>setup</code>和<code>teardown</code>時的情況。
在<code>contest.py</code> 增加一個<code>fixture</code>函數,如下:
由于我們用例執行過程中可能出現前置操作失敗、用例執行失敗、在後置操作失敗等情況,接下來我們看下這些情況,執行結果如何:
修改<code>contest.py</code> 的<code>fixture</code>函數,如下:
修改<code>test_report.py</code> ,如下:
從用例執行結果來看,我們保證setup和teardown執行成功,主要關注用例執行部分出錯,所有我們一般隻關注 <code>call</code> 執行部分
是以我們一般如下寫法:
下面由于公司是<code>redmie</code>系統,通過檢視送出缺陷api,存在送出缺陷接口:
<code>pip install python-redmine</code>
<code>contest.py</code> 的 <code>pytest_runtest_makereport</code> 寫法
pytest_runtest_makereport 的使用
pytest_runtest_makereport 和redmine 配置送出缺陷
以上為内容純屬個人了解,如有不足,歡迎各位大神指正,轉載請注明出處!
如果覺得文章不錯,歡迎關注微信公衆号,微信公衆号每天推送相關測試技術文章 微信公衆号:搜尋 【測試之路筆記】