Reputation: 5516
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
Upvotes: 5
Views: 2898
Reputation: 6567
I would try explicitly specifying --config=/home/YOUR_USERNAME/nose.cfg
in pycharm, as "Additional Arguments".
Upvotes: 5