如何配置PyCharm的Coverage检查程序以识别.coveragerc?

时间:2015-10-22 04:22:24

标签: python pycharm coverage.py

我的项目根目录中有一个.coveragerc文件。它告诉coverage.py省略我项目的迁移目录:

[run]
omit = *migrations*

当我在命令行运行coverage.py时,会遵守我放入.coveragerc的配置。

然而,PyCharm不承认它。有没有我失踪的环境?

如果事实证明PyCharm无法识别.coveragerc,我会很高兴即使只是省略这些目录的方法。

5 个答案:

答案 0 :(得分:9)

答案 1 :(得分:4)

有一种不同的方法可以让PyCharm忽略某些文件和文件夹:

Settings选择Project: ... - Project Structure。您可以在此处将文件夹标记为Excluded或专门排除文件。

PyCharm的代码覆盖率报告也忽略了所有这些被排除的文件。

答案 2 :(得分:3)

我发现自己处于需要这种情况的情况。我的travis跑步正常,工作服也是如此,但我无法在PyCharm中使用。

事情有点儿,但希望它能帮助人们:

在我的根项目目录中,我得到了一个.coveragerc

        function on_display_cart_item_price_html($html, $cart_item, $cart_item_key) {

            if (is_cart()) {
                $price_adjusted = 10; // your adjustments here
                $price_base = $cart_item['data']->sale_price;
                if (!empty($price_adjusted)) {
                    if (intval($price_adjusted) > 0) {
                        $_qnty = $cart_item['quantity'];
                        $cart_item['data']->set_price($price_base - ($price_adjusted / $_qnty));
                        $html = '<del>' . wc_price($price_base) . '</del><ins> ' . wc_price($price_base - ($price_adjusted / $_qnty)) . '</ins>';
                    } else {
                        $html = '<span class="amount">' . wc_price($price_base) . '</span>';
                    }
                }
            }

            return $html;
        }


add_filter('woocommerce_cart_item_price', 'on_display_cart_item_price_html', 100, 3);


    function change_woocommerce_cart_subtotal( $cart_subtotal, $compound, $cart ) { 
        $cart_subtotal = 5;
        return $cart_subtotal; 
    }; 
    add_filter( 'woocommerce_cart_subtotal', 'change_woocommerce_cart_subtotal', 10, 3 ); 


    // define the woocommerce_order_amount_total callback 
    function change_woocommerce_order_amount_total( $order_total ) { 

        $order_total = 5;
        return $order_total; 
    }; 
    add_filter( 'woocommerce_cart_totals_order_total_html', 'change_woocommerce_order_amount_total' );

我“破解”了一些PyCharm的run_coverage.py :( pycharm-2016.3.2 / helpers / coverage_runner / run_coverage.py)

开始
[run]
omit = ./venv
concurrency = multiprocessing
parallel = True
source = HookTest
data_file = .cache/.coverage

用以下内容替换所有内容:

argv = []

为了使用python setup.py测试运行,我在PyCharm中创建了一个脚本,它使用了所述的setup.py,test has参数,COVERAGE_COMBINE为全局env。它可能不是最好的解决方案,但至少它允许我在本地工作时不再使用HTML输出:)

答案 3 :(得分:1)

您可以将PyCharm放置在运行测试的工作目录中,以使用.coveragerc

https://youtrack.jetbrains.com/issue/PY-16945的功能请求已实现,并且在版本2018.1。中有效。

答案 4 :(得分:1)

在最新的Pycharm版本2018.3.4中不起作用。 我成功使之生效的唯一方法是将run_coverage.py设置为@PonteIneptique

这是我唯一要做的修改:

run_xml = os.getenv('PYCHARM_RUN_COVERAGE_XML')
argv = ["xml", "-o", coverage_file + ".xml", "--ignore-errors"]
rcfile = cwd + "/.coveragerc"
if os.path.exists(rcfile):
    print("Loading rcfile\n")
    argv += ["--rcfile", rcfile]


if run_xml:
    os.chdir(cwd)
    main(argv)
else:
    try:
        main()
    finally:
        if run_cov:
            os.chdir(cwd)
            main(argv)

确保在配置中也设置.coveragerc文件的工作目录。 Pycharm编码人员应从GUI更新其代码以支持此.coveragerc文件。