pythonpython-3.xunit-testingcoverage.pynose2

Is there a way to map python nose2 to coverage plugin which is installed in custom location?


I have installed nose2 with the following command:

pip3 install nose2

And I have installed the coverage in the custom path with the following command:

pip3 install --target=/tmp/coverage_pkg coverage

I want to execute the test cases and generate the coverage report. Is there a way to map my coverage plugin installed in custom path to the nose2?

I tried to execute the below command:

nose2 --with-coverage

I got the following output:

Warning: you need to install "coverage_plugin" extra requirements to use this plugin. e.g. `pip install nose2[coverage_plugin]`

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

I want to generate the coverage report by using the coverage package installed in custom path.

Can someone please explain if I can achieve this?


Solution

  • I was able to achieve this using the following command:

    cd <custom location where packages are installed>
    
    python3 -m nose2  --with-coverage -s "path_to_source_dir" --coverage "path_to_source_dir"
    

    You need to stay in the location where nose2 and coverage in installed(Custom dir/ Eg: /tmp/coverage_pkg).

    For more configuration and generating junit report and coverage report we can use the unittest.cfg file and .coveragerc for controlling coverage report and unit testing.

    Sample unittest.cfg:

    [unittest]
    plugins = nose2.plugins.junitxml
    start-dir = 
    code-directories = 
    test-file-pattern = *_test.py
    test-method-prefix = t
    
    [junit-xml]
    always-on = True
    keep_restricted = False
    path = nose2-junit.xml
    test_fullname = False
    
    [coverage]
    always-on = True
    coverage = 
    coverage-config = .coveragerc
    coverage-report = term-missing
                      xml
    

    Sample .coveragerc:

    [run]
    branch = True
    [xml]
    output =coverage.xml
    [report]
    show_missing = True
    omit=
        /test/*
        /poc1.py
        /bin/__init__.py
    

    Use the below command for using config file and generate unittest report and coverage report.

    python3 -m nose2 --config "<path to config file>/unittest.cfg"