Bored002
Bored002

Reputation: 403

Pytest Exit Codes

I've built my pytest class in the following manner:

class Test_Exit_Code(object):
    
  def setup_class(cls):
      If 2==2:
         # stop execution of the test class


  def test_a(self):
     assert True==True

As you can see inside the setup_class method i've inserted an IF , what i want to achieve in the if section is that if a certain condition appears to be true instead of the comment i want to return exit code 5 , i.e. no tests were collected . so far i haven't found any way to do it.

Upvotes: 0

Views: 4186

Answers (1)

Tzane
Tzane

Reputation: 3462

You could try calling pytest.exit(). Also it seems you are missing the classmethod decorator

import pytest

class Test_Exit_Code:
    @classmethod
    def setup_class(cls):
        if 2==2:
            pytest.exit("test exit code setup failed", returncode=5)

    def test_this_wont_run(self):
        assert True

    def test_neither_does_this(self):
        assert False

Output:

>python -m pytest test.py
====================== test session starts ======================
platform win32 -- Python 3.9.12, pytest-7.1.1, pluggy-1.0.0       
rootdir: /example
plugins: anyio-3.5.0
collected 2 items

test.py

===================== no tests ran in 0.25s ===================== 
!!!!!! _pytest.outcomes.Exit: test exit code setup failed !!!!!!!

Upvotes: 1

Related Questions