Skip to content

Getting TypeError: 'NoneType' object is not Callable #258

Open
@bab014

Description

First time user. Followed the instructions, I see that benchmark is an active plugin but everytime I try and use the benchmark fixture I get that error.

What am I doing wrong?

import csv

pytest_plugins = ("benchmark",)


def csv_ingest():
    with open("./data/customers-2000000.csv") as f:
        csv_reader = csv.reader(f)
        count: int = 0
        for record in csv_reader:
            # if count == 1:
            # print(record)
            new_record = record[0:4]
            name = new_record[2].upper()


def raw_ingest():
    with open("./data/customers-2000000.csv") as f:
        count: int = 0
        for line in f:
            record = line.split(",")
            # if count == 1:
            # print(record)
            new_record = record[0:4]
            name = new_record[2].upper()


def test_csv_ingest(benchmark):
    """
    Testing speed of initial ingest
    """
    benchmark(csv_ingest())


def test_raw_ingest(benchmark):
    """
    Testing speed of initial ingest
    """
    benchmark(raw_ingest())

And the full error

pytest
============================================================= test session starts ==============================================================
platform linux -- Python 3.11.2, pytest-8.1.1, pluggy-1.4.0
benchmark: 4.0.0 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
rootdir: /home/bret/repos/python/beamery
plugins: benchmark-4.0.0
collected 2 items                                                                                                                              

test_main.py FF                                                                                                                          [100%]

=================================================================== FAILURES ===================================================================
_______________________________________________________________ test_csv_ingest ________________________________________________________________

benchmark = <pytest_benchmark.fixture.BenchmarkFixture object at 0x7f3e66098e90>

    def test_csv_ingest(benchmark):
        """
        Testing speed of initial ingest
        """
>       benchmark(csv_ingest())

test_main.py:35: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv/lib/python3.11/site-packages/pytest_benchmark/fixture.py:125: in __call__
    return self._raw(function_to_benchmark, *args, **kwargs)
.venv/lib/python3.11/site-packages/pytest_benchmark/fixture.py:147: in _raw
    duration, iterations, loops_range = self._calibrate_timer(runner)
.venv/lib/python3.11/site-packages/pytest_benchmark/fixture.py:275: in _calibrate_timer
    duration = runner(loops_range)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

loops_range = range(0, 1), timer = <built-in function perf_counter>

    def runner(loops_range, timer=self._timer):
        gc_enabled = gc.isenabled()
        if self._disable_gc:
            gc.disable()
        tracer = sys.gettrace()
        sys.settrace(None)
        try:
            if loops_range:
                start = timer()
                for _ in loops_range:
>                   function_to_benchmark(*args, **kwargs)
E                   TypeError: 'NoneType' object is not callable

.venv/lib/python3.11/site-packages/pytest_benchmark/fixture.py:90: TypeError
_______________________________________________________________ test_raw_ingest ________________________________________________________________

benchmark = <pytest_benchmark.fixture.BenchmarkFixture object at 0x7f3e65fac5d0>

    def test_raw_ingest(benchmark):
        """
        Testing speed of initial ingest
        """
>       benchmark(raw_ingest())

test_main.py:42: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.venv/lib/python3.11/site-packages/pytest_benchmark/fixture.py:125: in __call__
    return self._raw(function_to_benchmark, *args, **kwargs)
.venv/lib/python3.11/site-packages/pytest_benchmark/fixture.py:147: in _raw
    duration, iterations, loops_range = self._calibrate_timer(runner)
.venv/lib/python3.11/site-packages/pytest_benchmark/fixture.py:275: in _calibrate_timer
    duration = runner(loops_range)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

loops_range = range(0, 1), timer = <built-in function perf_counter>

    def runner(loops_range, timer=self._timer):
        gc_enabled = gc.isenabled()
        if self._disable_gc:
            gc.disable()
        tracer = sys.gettrace()
        sys.settrace(None)
        try:
            if loops_range:
                start = timer()
                for _ in loops_range:
>                   function_to_benchmark(*args, **kwargs)
E                   TypeError: 'NoneType' object is not callable

.venv/lib/python3.11/site-packages/pytest_benchmark/fixture.py:90: TypeError
=========================================================== short test summary info ============================================================
FAILED test_main.py::test_csv_ingest - TypeError: 'NoneType' object is not callable
FAILED test_main.py::test_raw_ingest - TypeError: 'NoneType' object is not callable
============================================================== 2 failed in 5.78s ===============================================================

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions