2014-02-20 67 views
1

在Python中,我有一個劇本叫script.pyscript.py與測試搜索未經測試的功能

tests 
    __init__.py 
    test_set01.py 
    test_set02.py 

用於檢查未經測試的功能的子目錄我用這個bash script

#!/bin/bash 

for f in $(egrep "^def" script.py | sed "s/(/\t/" | awk '{print $2}') 
do 
if [ "" = "$(grep $f tests/*.*)" ] 
then 
    echo $f 
fi 
done 

存在更好的方法找到沒有測試的功能?

+0

肯定。 [獲取模塊中所有功能的列表](http://stackoverflow.com/questions/139180/listing-all-functions-in-a-python-module),然後檢查你的測試模塊。我想知道更多關於您使用'grep'檢查的方式。 'script.py'和'tests'中的模塊的內容是什麼樣的?如果你幫助我,我可以給你一個具體的答案。 – 2rs2ts

+1

此外,python測試覆蓋率的一個小搜索產生了[這個庫叫做'coverage'](http://nedbatchelder.com/code/coverage/),它可能也會完成這項工作。 – 2rs2ts

回答

0

有幾個很好的項目旨在檢測您將稱爲「代碼覆蓋率」。也就是說,單元測試覆蓋了多少代碼。就這樣有幾個項目,有幾種不同的措施可以使確定代碼覆蓋率:

  1. 代碼行
  2. 功能點
  3. 邏輯路徑

所有的這些都可以耍花招。但是,任何解決方案都可能比您所做的僅僅是更好的解決方案。

看看:

  1. Coveragepy
  2. 對於鼻子,請看cover
  3. 此外Figleaf(但我不知道它是相對於保險如何成熟。)