Pab
Pab

Reputation: 1052

Pytest stuck on 'collecting...'

I have a file new_script_piped.py with a function I want to test:

def columns_preparation(df):

    df.COLUMN_1.replace({'-999':'don't consider'}, inplace=True)
    ...more lines

    return df

and the test file test_new_script_piped.py

import pandas as pd
import new_script_piped as x

def test_columns_preparation(df):
    
    test_df = pd.read_excel('test_column_preparation.xlsx')
    result_df = pd.read_excel('test_column_preparation_result.xlsx')

    assert x.columns_preparation(test_df) == result_df

All files are in the same directory. I have tried on the command line:

python3 -m pytest new_script_piped.py
pytest new_script_piped.py
python -m pytest new_script_piped.py

and they all get suck at:

platform darwin -- Python 3.7.3, pytest-4.5.0, py-1.8.0, pluggy-0.11.0
rootdir: /Users/31275553/Documents/
collecting ... 

Upvotes: 10

Views: 17618

Answers (6)

vikas0713
vikas0713

Reputation: 596

In my case it was completely a different story. I was using local postgresql server and consuming it for the test db and after spending a whole day, I got to know that my db connection pool size is already reached to the limit hence test db connection was not successful. After that I deleted the system processes(async tests, I ran previously) consuming the db connections in the background. After killing the first process my test case automatically ran. Hope it helps someone.

Upvotes: 1

Chandan Singh
Chandan Singh

Reputation: 11

In case someone is still facing this issue and none of their code can lead to infinite loop, try deleting pycache directories that could help.

Upvotes: 1

bhargav
bhargav

Reputation: 1

I uninstalled pytest-dbfixtures in pip list then module notfound error resolved

Upvotes: -3

Daniel Braun
Daniel Braun

Reputation: 2712

Your test is probably taking a long time

pytest -s path_to_script.py  

In order to see stdout if you have any progress prints

Upvotes: 11

JHS
JHS

Reputation: 1428

I was able to reduce the "Collecting..." delay by a significant margin by narrowing down which directories are searched for tests, which achieves the same effect as finomayato's answer, through config rather than supplying the path to the tests as an argument.

Based on example from the docs, let's say you want to make sure pytest isn't digging down into your git, build, or frontend dependency directories looking for tests:

# content of pytest.ini
[pytest]
norecursedirs = .git build node_modules

https://docs.pytest.org/en/latest/example/pythoncollection.html#changing-directory-recursion

Upvotes: 3

finomayato
finomayato

Reputation: 80

You have two options:

  • Create a separate module with these two files and run pytest from this directory

  • Specify file/folder to look for tests by executing pytest test_new_script_piped.py

Since pytest recursively looking for tests the issue could be caused by executing pytest command inside the directory with a lot of files (which could be true, judging by rootdir: /Users/31275553/Documents/ provided by you in the snippet).

If none of the options would work - it would be great to know what is inside the /Users/31275553/Documents/ directory

Upvotes: -2

Related Questions