4

私はノーズカバレッジを使用してカバレッジ レポートを生成しています。現在aeというパッケージが 1 つしかないので、それのみをカバーするように指定します。

nosetests -w tests/unit --with-xunit --with-coverage --cover-package=ae

そして、ここに結果があります。

Name             Stmts   Exec  Cover   Missing
----------------------------------------------
ae                   1      1   100%   
ae.util            253    224    88%   39, 63-65, 284, 287, 362, 406
----------------------------------------------
TOTAL              263    234    88%   
----------------------------------------------------------------------
Ran 68 tests in 5.292s

しかし、実行すると、コードとは関係のないpython電子メールロギングcoverage xmlパッケージなど、必要以上のパッケージがカバレッジによって取り込まれます。

を実行するcoverage xml aeと、次のエラーが発生します。

No source for code: '/home/wraith/dev/projects/trimurti/src/ae': 
[Errno 21] Is a directory: '/home/wraith/dev/projects/trimurti/src/ae'

aeパッケージだけの XML を生成する方法はありますか?

4

3 に答える 3

3

私は同様の問題を抱えていて、--omitオプションでそれを解決しました。これにより、実行速度が大幅に向上し、coverage.xmlのサイズが2MBから70kBに減少しました。

--omit=PRE1,PRE2,...  Omit files when their filename path starts with one of
                      these prefixes.

私はMacOSXを使用しているので、/Library/フォルダーと/Applications/フォルダーを省略しました。

$ coverage xml --omit=/Library/,/Applications/

他のシステムでは、より役立つ場合が--omit=/usr/あります。

于 2010-05-03T05:49:53.423 に答える
0

これに対する答えを見つけることができなかったので、処理後に不要なパッケージ要素を取り除いています。この関数は、元の XML ファイル、チェックする要素名、チェックするその属性、保持するパターン (または単語のリスト)、および新しいファイルの宛先ファイルパスを受け取ります。

from lxml import etree

def keep(self, xmlfile, elem_name, attr_name, pattern, dst):
    try: 
        rep = re.compile(pattern)
    except TypeError:
        # Create regex pattern if a list is given. 
        # TypeError: unhashable type: 'list'
        rep = re.compile("|".join(pattern))

    dom = etree.parse(xmlfile)
    for node in dom.findall('//%s' % elem_name):
        if not rep.search(node.get(attr_name)):
            node.getparent().remove(node)

    dom.write(dst)

私の問題を解決するために、次のように呼び出しています。

keep('coverage.xml', 'package', 'name', 'ae|tests', 'wanted-coverage.xml')
于 2010-03-04T05:47:49.257 に答える
0

試しましたか:

coverage xml ae
于 2010-02-26T03:44:57.860 に答える