PlatSim_Genova/TestEnvironment/env/site-packages/pyvisa/testsuite/__init__.py
2026-01-30 16:38:33 +01:00

61 lines
1.6 KiB
Python

# -*- coding: utf-8 -*-
"""PyVISA testsuite.
"""
import logging
from logging.handlers import BufferingHandler
import pytest
from pyvisa import ResourceManager, logger
try:
ResourceManager()
except ValueError:
VISA_PRESENT = False
else:
VISA_PRESENT = True
require_visa_lib = pytest.mark.skipif(
not VISA_PRESENT,
reason="Requires an installed VISA library. Run on PyVISA buildbot.",
)
class TestHandler(BufferingHandler):
def __init__(self, only_warnings=False):
# BufferingHandler takes a "capacity" argument
# so as to know when to flush. As we're overriding
# shouldFlush anyway, we can set a capacity of zero.
# You can call flush() manually to clear out the
# buffer.
self.only_warnings = only_warnings
BufferingHandler.__init__(self, 0)
def shouldFlush(self, record):
return False
def emit(self, record):
if self.only_warnings and record.level != logging.WARNING:
return
self.buffer.append(record.__dict__)
class BaseTestCase:
CHECK_NO_WARNING = True
def setup_method(self):
self._test_handler = None
if self.CHECK_NO_WARNING:
self._test_handler = th = TestHandler()
th.setLevel(logging.WARNING)
logger.addHandler(th)
def teardown_method(self):
if self._test_handler is not None:
buf = self._test_handler.buffer
length = len(buf)
msg = "\n".join(record.get("msg", str(record)) for record in buf)
assert length == 0, "%d warnings raised.\n%s" % (length, msg)