簡體   English   中英

pytest-cov始終顯示0的Tavern測試覆蓋率

[英]pytest-cov always show 0 coverage for Tavern test

我有一個與flask運行的python3應用程序,我正在使用Tavernpytest進行測試。 測試用例按預期執行,並正確顯示結果。 但是我總是得到0%的代碼覆蓋率。

這是用於運行測試的命令行:

python3 -m pytest --cov=api --cov-report html:reports/Coverage --cov-report term --junitxml=reports/UnitTest.xm
l --html=reports/TestSummary.html --self-contained-html

所有源代碼都在api模塊下。 每個模塊中的__init__.py文件的覆蓋率結果僅顯示100% 它沒有顯示真實源代碼的任何覆蓋率數據。

此項目中測試的依賴項版本為:

flask==1.1.1
flask_testing==0.7.1
coverage>=4.0.3
nose>=1.3.7
pluggy>=0.3.1
py>=1.4.31
randomize>=0.13
pytest==4.6.4
pytest-cov>=2.6.0
tavern==0.26.4
pytest-html>=1.20.0
pytest-freezegun>=0.3.0
pytest-mock>=1.10.3

我的項目中.coveragerc的內容是:

[report]
exclude_lines =
    if __name__ == .__main__.:

默認情況下(除非您使用的是實驗性插件,例如https://github.com/taverntesting/tavern-flask ),否則應用程序代碼將在與測試所運行的進程不同的OS進程中運行。

由於coverage可以識別執行了哪些行的方式,因此只能在與運行時相同的過程中測試代碼。您可以在此處詳細了解其工作方式: https//coverage.readthedocs.io/en /v4.5.x/howitworks.html

為了實現您的目標-我假設是獲得Web服務器代碼的覆蓋范圍,請使用coverage.py運行flask服務器,例如coverage run --source=app flask run ,然后對服務器運行測試,如下所示:您現在就(減去覆蓋范圍)。 然后,coverage輸出將包含有關在殺死服務器時運行tavern測試時執行了哪些行的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM