Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pycharm not using nosetests config file

PyCharm doesn't load any settings from the nose config file while python's interpreter does. How can I enable PyCharm to use the config file? I'd also like to understand why.

It's very important that the settings come from the config file and not only params on my instance of PyCharm. My provided set up only has 3 files, but I will eventually be using the answer to share testing settings collaboratively.

Here's the setup:

~/PycharmProjects/Testing/test_suite.py
~/PycharmProjects/Testing/unnecessary_math.py
~/nose.cfg

When running via the interpreter(outside of PyCharm) the "nose.cfg" settings are recognized and ran giving:

Marcs-MacBook-Pro:Testing marcs$ nosetests -s .
nose.config: INFO: Ignoring files matching ['^\\.', '^_', '^setup\\.py$']
Doctest: unnecessary_math.divide ... ok
Doctest: unnecessary_math.multiply ... ok
Starting Test
['/Users/marcs/nose.cfg']
test_suite.test_numbers_0_4 ... ok
test_suite.test_num_4_4_4_4 ... ok
Ending Test

----------------------------------------------------------------------
XML: nosetests.xml
----------------------------------------------------------------------
Ran 4 tests in 0.008s

OK
Marcs-MacBook-Pro:Testing marcs$ 

When running from PyCharm I get this output

/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python /Applications/PyCharm.app/helpers/pydev/pydevd.py --multiproc --client 127.0.0.1 --port 61446 --file /Applications/PyCharm.app/helpers/pycharm/noserunner.py /Users/marcs/PycharmProjects/Testing/ -s
Testing started at 5:36 AM ...
pydev debugger: process 10464 is connecting

Connected to pydev debugger (build 133.881)




Starting Test
['/Users/marcs/nose.cfg']
..

..
Ending Test

----------------------------------------------------------------------
Ran 2 tests in 0.023s

OK


Process finished with exit code 0

So from what I can see it looks like PyCharm's environment is cognizant of the nose.cfg file but for some reason chooses not to load it. I don't know why.

I've included the source code of the files below:

~/nose.cfg

[nosetests]
verbosity=3
with-doctest=1
with-xunit=1

test_suite.py

from unnecessary_math import multiply
from nose.tools import assert_equals
import nose.config as config

def setup_module():
    print "Starting Test"
    print config.all_config_files()

def teardown_module():
    print "Ending Test"

def test_numbers_0_4():
    assert_equals(multiply(0,4), 0)

def test_num_4_4_4_4():
    assert_equals(multiply(4,4,4,4), 256)

unnecessary_math.py

def multiply(*args):
    """
        This function multiplies any number of integers together
        'Given a list of numbers it will give you their commutative product'
        >>> multiply(4,4)
        16
        >>> multiply(4,4,4,4)
        256
        >>>
    """
    product = 1
    for arg in args:
        product = product * arg
    return product

def divide(a,b):
    """
        This function divides a by b
        'b divides a'
        >>> divide(4,4)
        1
        >>> divide(8,2)
        4
        >>>
        >>> divide(5,2)
        2
        >>>
    """
    return a/b
like image 810
Marc Avatar asked Mar 06 '14 12:03

Marc


People also ask

How do you use Nosetests in Pycharm?

In the current version of Pycharm (2.6) there should be a context menu "run Nosetests in ..." on a test file. If this is missing, go to file->settings->Project Settings->python integrated tools and ensure the Default Test Runner is Nosetests.

How does Pycharm run all Pytests?

Run all tests in a directoryFrom the context menu, select the corresponding run command. If the directory contains tests that belong to the different testing frameworks, select the configuration to be used. For example, select Run pytest in <directory name>'. Explore results in the test runner.


1 Answers

I would try explicitly specifying --config=/home/YOUR_USERNAME/nose.cfg in pycharm, as "Additional Arguments".

like image 70
Oleksiy Avatar answered Sep 22 '22 08:09

Oleksiy