Skip to content

pytest raises TypeError on parsing a specific test case #5578

@ResidentMario

Description

@ResidentMario

The following sequence of commands creates an environment with pytest installed which fails repeatably on execution:

conda create --name missingno-dev seaborn pytest jupyter pandas scipy
conda activate missingno-dev
git clone https://github.com/ResidentMario/missingno.git
cd missingno
pip install -e .
cd tests
pytest viz_tests.py

The error text is:

(missingno-dev) Alexs-MacBook:tests alex$ pytest viz_tests.py 
============================= test session starts ==============================
platform darwin -- Python 3.7.3, pytest-5.0.1, py-1.8.0, pluggy-0.12.0
Matplotlib: 3.1.1
Freetype: 2.10.0
rootdir: /Users/alex/Desktop/missingno
plugins: mpl-0.10
collected 0 items                                                              
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/_pytest/main.py", line 213, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/_pytest/main.py", line 256, in _main
INTERNALERROR>     config.hook.pytest_collection(session=session)
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/pluggy/hooks.py", line 289, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/pluggy/manager.py", line 87, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/pluggy/manager.py", line 81, in <lambda>
INTERNALERROR>     firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/pluggy/callers.py", line 208, in _multicall
INTERNALERROR>     return outcome.get_result()
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/_pytest/main.py", line 266, in pytest_collection
INTERNALERROR>     return session.perform_collect()
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/_pytest/main.py", line 459, in perform_collect
INTERNALERROR>     items = self._perform_collect(args, genitems)
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/_pytest/main.py", line 498, in _perform_collect
INTERNALERROR>     self.items.extend(self.genitems(node))
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/_pytest/main.py", line 717, in genitems
INTERNALERROR>     rep = collect_one_node(node)
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/_pytest/runner.py", line 368, in collect_one_node
INTERNALERROR>     rep = ihook.pytest_make_collect_report(collector=collector)
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/pluggy/hooks.py", line 289, in __call__
INTERNALERROR>     return self._hookexec(self, self.get_hookimpls(), kwargs)
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/pluggy/manager.py", line 87, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/pluggy/manager.py", line 81, in <lambda>
INTERNALERROR>     firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/pluggy/callers.py", line 203, in _multicall
INTERNALERROR>     gen.send(outcome)
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/_pytest/capture.py", line 203, in pytest_make_collect_report
INTERNALERROR>     rep = outcome.get_result()
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/pluggy/callers.py", line 80, in get_result
INTERNALERROR>     raise ex[1].with_traceback(ex[2])
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/_pytest/runner.py", line 266, in pytest_make_collect_report
INTERNALERROR>     collector.nodeid, outcome, longrepr, getattr(call, "result", None)
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/_pytest/runner.py", line 210, in result
INTERNALERROR>     raise AttributeError("{!r} has no valid result".format(self))
INTERNALERROR>   File "/Users/alex/miniconda3/envs/missingno-dev/lib/python3.7/site-packages/_pytest/runner.py", line 238, in __repr__
INTERNALERROR>     when=self.when, value=value, status=status
INTERNALERROR> TypeError: __str__ returned non-string (type function)

The test case which is causing this error is the following one (all other test cases work as expected):

class TestGeoplot(unittest.TestCase):
    """Integration tests only. The main function operations are handled by and tested in the `geoplot` package."""

    def setUp(self):
        np.random.seed(42)
        simple_df = pd.DataFrame((np.random.random((20, 10))), columns=range(0, 10))
        simple_df = simple_df.add_prefix("r")
        self.x_y_df = simple_df

    # @pytest.mark.mpl_image_compare
    @pytest.xfail
    def test_geoplot_quadtree(self):
        msno.geoplot(self.x_y_df, x='r0', y='r1')
        return plt.gcf()

This isn't a failure in the library code (e.g. in missingno) because neither the test code nor the setUp code ever gets executed—pytest raises an internal error before it gets that far.

conda list output is:

(missingno-dev) Alexs-MacBook:tests alex$ conda list
# packages in environment at /Users/alex/miniconda3/envs/missingno-dev:
#
# Name                    Version                   Build  Channel
appnope                   0.1.0                 py37_1000    conda-forge
atomicwrites              1.3.0                      py_0    conda-forge
attrs                     19.1.0                     py_0    conda-forge
backcall                  0.1.0                      py_0    conda-forge
bleach                    3.1.0                      py_0    conda-forge
bzip2                     1.0.6             h1de35cc_1002    conda-forge
ca-certificates           2019.6.16            hecc5488_0    conda-forge
certifi                   2019.6.16                py37_0    conda-forge
cycler                    0.10.0                     py_1    conda-forge
dbus                      1.13.6               h2f22bb5_0    conda-forge
decorator                 4.4.0                      py_0    conda-forge
defusedxml                0.5.0                      py_1    conda-forge
entrypoints               0.3                   py37_1000    conda-forge
expat                     2.2.5             h6de7cb9_1003    conda-forge
freetype                  2.10.0               h24853df_0    conda-forge
gettext                   0.19.8.1          h46ab8bc_1002    conda-forge
glib                      2.58.3            h9d45998_1001    conda-forge
icu                       58.2              h0a44026_1000    conda-forge
importlib_metadata        0.18                     py37_0    conda-forge
ipykernel                 5.1.1            py37h24bf2e0_0    conda-forge
ipython                   7.6.1            py37h5ca1d4c_0    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
ipywidgets                7.5.0                      py_0    conda-forge
jedi                      0.14.0                   py37_0    conda-forge
jinja2                    2.10.1                     py_0    conda-forge
jpeg                      9c                h1de35cc_1001    conda-forge
jsonschema                3.0.1                    py37_0    conda-forge
jupyter                   1.0.0                      py_2    conda-forge
jupyter_client            5.3.0                      py_0    conda-forge
jupyter_console           6.0.0                      py_0    conda-forge
jupyter_core              4.4.0                      py_0    conda-forge
kiwisolver                1.1.0            py37h770b8ee_0    conda-forge
libblas                   3.8.0               10_openblas    conda-forge
libcblas                  3.8.0               10_openblas    conda-forge
libcxx                    8.0.0                         4    conda-forge
libcxxabi                 8.0.0                         4    conda-forge
libffi                    3.2.1             h6de7cb9_1006    conda-forge
libgfortran               3.0.1                         0    conda-forge
libiconv                  1.15              h01d97ff_1005    conda-forge
liblapack                 3.8.0               10_openblas    conda-forge
libopenblas               0.3.6                hd44dcd8_4    conda-forge
libpng                    1.6.37               h2573ce8_0    conda-forge
libsodium                 1.0.16            h1de35cc_1001    conda-forge
markupsafe                1.1.1            py37h1de35cc_0    conda-forge
matplotlib-base           3.1.1            py37h3a684a6_0    conda-forge
missingno                 0.4.1                     dev_0    <develop>
mistune                   0.8.4           py37h1de35cc_1000    conda-forge
more-itertools            7.1.0                      py_0    conda-forge
nbconvert                 5.5.0                      py_0    conda-forge
nbformat                  4.4.0                      py_1    conda-forge
ncurses                   6.1               h0a44026_1002    conda-forge
nose                      1.3.7                    pypi_0    pypi
notebook                  5.7.8                    py37_1    conda-forge
numpy                     1.16.4           py37h6b0580a_0    conda-forge
openblas                  0.3.6                hd44dcd8_4    conda-forge
openssl                   1.1.1b               h01d97ff_2    conda-forge
packaging                 19.0                       py_0    conda-forge
pandas                    0.24.2           py37h86efe34_0    conda-forge
pandoc                    2.7.3                         0    conda-forge
pandocfilters             1.4.2                      py_1    conda-forge
parso                     0.5.0                      py_0    conda-forge
patsy                     0.5.1                      py_0    conda-forge
pcre                      8.41              h0a44026_1003    conda-forge
pexpect                   4.7.0                    py37_0    conda-forge
pickleshare               0.7.5                 py37_1000    conda-forge
pip                       19.1.1                   py37_0    conda-forge
pluggy                    0.12.0                     py_0    conda-forge
prometheus_client         0.7.1                      py_0    conda-forge
prompt_toolkit            2.0.9                      py_0    conda-forge
ptyprocess                0.6.0                   py_1001    conda-forge
py                        1.8.0                      py_0    conda-forge
pygments                  2.4.2                      py_0    conda-forge
pyparsing                 2.4.0                      py_0    conda-forge
pyqt                      5.9.2            py37h2a560b1_0    conda-forge
pyrsistent                0.15.3           py37h01d97ff_0    conda-forge
pytest                    5.0.1                    py37_0    conda-forge
pytest-mpl                0.10                     pypi_0    pypi
python                    3.7.3                h93065d6_1    conda-forge
python-dateutil           2.8.0                      py_0    conda-forge
pytz                      2019.1                     py_0    conda-forge
pyzmq                     18.0.2           py37h2d07e9b_0    conda-forge
qt                        5.9.7                h93ee506_2    conda-forge
qtconsole                 4.5.1                      py_0    conda-forge
readline                  8.0                  hcfe32e1_0    conda-forge
scipy                     1.3.0            py37hab3da7d_0    conda-forge
seaborn                   0.9.0                      py_1    conda-forge
send2trash                1.5.0                      py_0    conda-forge
setuptools                41.0.1                   py37_0    conda-forge
sip                       4.19.8          py37h0a44026_1000    conda-forge
six                       1.12.0                py37_1000    conda-forge
sqlite                    3.28.0               hb7d70f7_1    conda-forge
statsmodels               0.10.0           py37heacc8b8_0    conda-forge
terminado                 0.8.2                    py37_0    conda-forge
testpath                  0.4.2                   py_1001    conda-forge
tk                        8.6.9             h2573ce8_1002    conda-forge
tornado                   6.0.3            py37h01d97ff_0    conda-forge
traitlets                 4.3.2                 py37_1000    conda-forge
wcwidth                   0.1.7                      py_1    conda-forge
webencodings              0.5.1                      py_1    conda-forge
wheel                     0.33.4                   py37_0    conda-forge
widgetsnbextension        3.5.0                    py37_0    conda-forge
xz                        5.2.4             h1de35cc_1001    conda-forge
zeromq                    4.3.1             h0a44026_1000    conda-forge
zipp                      0.5.1                      py_0    conda-forge
zlib                      1.2.11            h1de35cc_1004    conda-forge

This is using conda 4.7.5 and pip 19.1.1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    topic: reportingrelated to terminal output and user-facing messages and errorstype: bugproblem that needs to be addressed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions