簡體   English   中英

如何使用Behave從Python BDD功能測試中獲取代碼覆蓋率數據?

[英]How can I get code coverage data from Python BDD functional tests using Behave?

我還沒有看到這個特定問題的答案( 行為測試框架的測試覆蓋率工具 ),我還沒有看到任何谷歌搜索結果產生足夠的答案。 因此...

如何從Behave獲取代碼覆蓋率報告? 我發現很難相信沒有使用BDD方法的Python開發人員,我發現更難以相信那些使用BDD的Python開發人員在沒有功能測試的代碼覆蓋統計數據的情況下這樣做。 可以使用Coverage.py來驅動Behave以產生代碼覆蓋嗎? 怎么樣?

我不知道如何使用表現,但我使用Cucumber進行BDD,我認為可能幾乎相似。 所以我認為你應該能夠使用覆蓋范圍的行為。 你必須指定要包含在文件中的文件..(我用它和黃瓜一起使用)。 看看可能會有所幫助。

希望這回答你的問題:)

# .coveragerc to control coverage.py
[run]
parallel = True

# if you want to include tests append tests/*
include =
    src/*
    *src*

[paths]
source =
    src/
    */src

tests =
    tests/
    */tests

繼大衛的建議之后。

假設要測試的代碼位於app目錄中,請將以下內容添加到.coveragerc文件中:

[run]
source=app/

從終端:

coverage run $(which behave);

然后,您可以正常使用覆蓋率報告或覆蓋率html。 如果未在.coveragerc文件中指定app dir,則coverage將測試您的行為安裝本地的所有Python庫。

Behave可以生成junit覆蓋數據, 覆蓋包可以組合來自多個測試運行的數據,並生成HTML報告,您可以在CI環境中仔細閱讀或自動發布。

以下是我目前用於生成,組合和報告覆蓋率的語句:

cd your/repo/tests  # <-- Make sure you're inside your tests dir!
rm -rf behave-reports/*
behave --junit --junit-directory behave-reports
coverage combine
coverage html

rm -rf behave-reports/*強制刪除了behave-reports /目錄中的所有內容,這樣我就可以保證新的覆蓋率報告或者根本不保證(在我的情況下會導致CI失敗)。 請注意,如果您在本地運行測試,則需要在.gitignore文件(或等效文件)中添加一個條目,這樣您就不會添加和提交測試結果。

使用--junit運行行為將產生junit輸出,而--junit-directory標志告訴行為在磁盤上寫入該junit數據的行為。

運行coverage combine占用所有代碼覆蓋率,並將其組合到單個覆蓋文件中。

最后, coverage html生成一個漂亮的html報告,其中包含所有組合的覆蓋數據。

另一種選擇,使用coverage來運行行為的主腳本:

coverage run /path/to/lib/python2.7/site-packages/behave/__main__.py

當然,您需要在.coveragerc中指定要包含的源文件。

暫無
暫無

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

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