I am running a pytest with Pycharm. It follows the fixture correctly when using ctrl+click
.
import pytest
@pytest.fixture(scope="session")
def bar():
return 1
def test_foo(bar):
pass
When trying to run, I am getting
ssh://noam@ML:2204/miniconda/envs/py37/bin/python -u /home/noam/.pycharm_helpers/pycharm/_jb_unittest_runner.py --target test_pre_processing.test_foo
Testing started at 20:15 ...
Launching unittests with arguments python -m unittest test_pre_processing.test_foo in /home/noam/src/algo_flows/tests
Traceback (most recent call last):
File "/home/noam/.pycharm_helpers/pycharm/_jb_unittest_runner.py", line 35, in <module>
sys.exit(main(argv=args, module=None, testRunner=unittestpy.TeamcityTestRunner, buffer=not JB_DISABLE_BUFFERING))
File "/miniconda/envs/py37/lib/python3.7/unittest/main.py", line 100, in __init__
self.parseArgs(argv)
File "/miniconda/envs/py37/lib/python3.7/unittest/main.py", line 147, in parseArgs
self.createTests()
File "/miniconda/envs/py37/lib/python3.7/unittest/main.py", line 159, in createTests
self.module)
File "/miniconda/envs/py37/lib/python3.7/unittest/loader.py", line 220, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "/miniconda/envs/py37/lib/python3.7/unittest/loader.py", line 220, in <listcomp>
suites = [self.loadTestsFromName(name, module) for name in names]
File "/miniconda/envs/py37/lib/python3.7/unittest/loader.py", line 205, in loadTestsFromName
test = obj()
TypeError: test_foo() missing 1 required positional argument: 'bar'
I can see the logs show this should be the answer to my problem (unittest clashing with pytest), but pycharm is already configured to run pytest!
After some head bashing, it seems that after setting pycharm to pytest over unittest, one must also remove and recreate the run-configurations.