Pytest and forking
- This tests passes and generates two reports.
- I could not find a way yet to avoid the reporting in the child-process. Maybe we need to run this with a special runner that will fork and run this test on our behalf.
examples/pytest/fork/app.py
import os def func(x, y): pid = os.fork() if pid == 0: print(f"Child {os.getpid()}") #raise Exception("hello") exit() print(f"Parent {os.getpid()} The child is {pid}") os.wait() #exit() #raise Exception("hello") return x+y if __name__ == '__main__': func(2, 3)
examples/pytest/fork/test_app.py
import app import os #def test_func(): # assert app.func(2, 3) == 5 def test_func(): pid = os.getpid() try: res = app.func(2, 3) assert res == 5 except SystemExit as ex: assert str(ex) == 'None' #SystemExit(None) # or ex == 0 if pid == os.getpid(): raise ex
examples/pytest/cases/test_one.py
import logging def add(x, y): # logger = logging.getLogger("mytest") logging.basicConfig(level = logging.INFO) logging.info("Just some info log") return x * y def test_one(): assert add(2, 2) == 4