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
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.
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.
I would try explicitly specifying --config=/home/YOUR_USERNAME/nose.cfg
in pycharm, as "Additional Arguments".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With