How to use pytest_internalerror method in Pytest

Best Python code snippet using pytest

test_txnode.py

Source:test_txnode.py Github

copy

Full Screen

1import py2from py.__.test.dist.txnode import TXNode3class EventQueue:4 def __init__(self, registry, queue=None):5 if queue is None:6 queue = py.std.Queue.Queue()7 self.queue = queue8 registry.register(self)9 def geteventargs(self, eventname, timeout=2.0):10 events = []11 while 1:12 try:13 eventcall = self.queue.get(timeout=timeout)14 except py.std.Queue.Empty:15 #print "node channel", self.node.channel16 #print "remoteerror", self.node.channel._getremoteerror()17 print "seen events", events18 raise IOError("did not see %r events" % (eventname))19 else:20 name, args, kwargs = eventcall 21 assert isinstance(name, str)22 if name == eventname:23 if args:24 return args25 return kwargs26 events.append(name)27 if name == "pytest_internalerror":28 print str(kwargs["excrepr"])29class MySetup:30 def __init__(self, request):31 self.id = 032 self.request = request33 def geteventargs(self, eventname, timeout=2.0):34 eq = EventQueue(self.config.pluginmanager, self.queue)35 return eq.geteventargs(eventname, timeout=timeout)36 def makenode(self, config=None):37 if config is None:38 config = py.test.config._reparse([])39 self.config = config40 self.queue = py.std.Queue.Queue()41 self.xspec = py.execnet.XSpec("popen")42 self.gateway = py.execnet.makegateway(self.xspec)43 self.id += 144 self.gateway.id = str(self.id)45 self.node = TXNode(self.gateway, self.config, putevent=self.queue.put)46 assert not self.node.channel.isclosed()47 return self.node 48 def xfinalize(self):49 if hasattr(self, 'node'):50 gw = self.node.gateway51 print "exiting:", gw52 gw.exit()53def pytest_funcarg__mysetup(request):54 mysetup = MySetup(request)55 #pyfuncitem.addfinalizer(mysetup.finalize)56 return mysetup57def test_node_hash_equality(mysetup):58 node = mysetup.makenode()59 node2 = mysetup.makenode()60 assert node != node261 assert node == node62 assert not (node != node)63class TestMasterSlaveConnection:64 def test_crash_invalid_item(self, mysetup):65 node = mysetup.makenode()66 node.send(123) # invalid item 67 kwargs = mysetup.geteventargs("pytest_testnodedown")68 assert kwargs['node'] is node 69 assert str(kwargs['error']).find("AttributeError") != -170 def test_crash_killed(self, testdir, mysetup):71 if not hasattr(py.std.os, 'kill'):72 py.test.skip("no os.kill")73 item = testdir.getitem("""74 def test_func():75 import os76 os.kill(os.getpid(), 15)77 """)78 node = mysetup.makenode(item.config)79 node.send(item) 80 kwargs = mysetup.geteventargs("pytest_testnodedown")81 assert kwargs['node'] is node 82 assert str(kwargs['error']).find("Not properly terminated") != -183 def test_node_down(self, mysetup):84 node = mysetup.makenode()85 node.shutdown()86 kwargs = mysetup.geteventargs("pytest_testnodedown")87 assert kwargs['node'] is node 88 assert not kwargs['error']89 node.callback(node.ENDMARK)90 excinfo = py.test.raises(IOError, 91 "mysetup.geteventargs('testnodedown', timeout=0.01)")92 def test_send_on_closed_channel(self, testdir, mysetup):93 item = testdir.getitem("def test_func(): pass")94 node = mysetup.makenode(item.config)95 node.channel.close()96 py.test.raises(IOError, "node.send(item)")97 #ev = self.getcalls(pytest_internalerror)98 #assert ev.excinfo.errisinstance(IOError)99 def test_send_one(self, testdir, mysetup):100 item = testdir.getitem("def test_func(): pass")101 node = mysetup.makenode(item.config)102 node.send(item)103 kwargs = mysetup.geteventargs("pytest_runtest_logreport")104 rep = kwargs['report'] 105 assert rep.passed 106 print rep107 assert rep.item == item108 def test_send_some(self, testdir, mysetup):109 items = testdir.getitems("""110 def test_pass(): 111 pass112 def test_fail():113 assert 0114 def test_skip():115 import py116 py.test.skip("x")117 """)118 node = mysetup.makenode(items[0].config)119 for item in items:120 node.send(item)121 for outcome in "passed failed skipped".split():122 kwargs = mysetup.geteventargs("pytest_runtest_logreport")123 report = kwargs['report']124 assert getattr(report, outcome) 125 node.sendlist(items)126 for outcome in "passed failed skipped".split():127 rep = mysetup.geteventargs("pytest_runtest_logreport")['report']...

Full Screen

Full Screen

pytest_pudb.py

Source:pytest_pudb.py Github

copy

Full Screen

...50 https://docs.pytest.org/en/latest/reference.html#_pytest.hookspec.pytest_exception_interact51 """52 self.disable_io_capture()53 _enter_pudb(node, call.excinfo, report)54 def pytest_internalerror(self, excrepr, excinfo):55 """56 Pytest plugin interface for internal errors handling57 https://docs.pytest.org/en/latest/reference.html#_pytest.hookspec.pytest_internalerror58 """59 for line in str(excrepr).split("\n"):60 sys.stderr.write("INTERNALERROR> {}\n".format(line))61 sys.stderr.flush()62 tb = _postmortem_traceback(excinfo)63 post_mortem(tb, excinfo)64 def _suspend_capture(self, capman, *args, **kwargs):65 if hasattr(capman, 'suspendcapture'):66 # pytest changed the suspend capture API since v3.3.167 # see: https://github.com/pytest-dev/pytest/pull/280168 # TODO: drop this case after pytest v3.3.1+ is minimal required...

Full Screen

Full Screen

resultlog.py

Source:resultlog.py Github

copy

Full Screen

...72 assert report.skipped73 code = "S"74 longrepr = "%s:%d: %s" % report.longrepr75 self.log_outcome(report, code, longrepr)76 def pytest_internalerror(self, excrepr):77 reprcrash = getattr(excrepr, "reprcrash", None)78 path = getattr(reprcrash, "path", None)79 if path is None:80 path = "cwd:%s" % py.path.local()...

Full Screen

Full Screen

conftest.py

Source:conftest.py Github

copy

Full Screen

...7 @pytest.hookimpl(tryfirst=True)8 def pytest_exception_interact(call):9 raise call.excinfo.value10 @pytest.hookimpl(tryfirst=True)11 def pytest_internalerror(excinfo):...

Full Screen

Full Screen

Pytest Tutorial

Looking for an in-depth tutorial around pytest? LambdaTest covers the detailed pytest tutorial that has everything related to the pytest, from setting up the pytest framework to automation testing. Delve deeper into pytest testing by exploring advanced use cases like parallel testing, pytest fixtures, parameterization, executing multiple test cases from a single file, and more.

Chapters

  1. What is pytest
  2. Pytest installation: Want to start pytest from scratch? See how to install and configure pytest for Python automation testing.
  3. Run first test with pytest framework: Follow this step-by-step tutorial to write and run your first pytest script.
  4. Parallel testing with pytest: A hands-on guide to parallel testing with pytest to improve the scalability of your test automation.
  5. Generate pytest reports: Reports make it easier to understand the results of pytest-based test runs. Learn how to generate pytest reports.
  6. Pytest Parameterized tests: Create and run your pytest scripts while avoiding code duplication and increasing test coverage with parameterization.
  7. Pytest Fixtures: Check out how to implement pytest fixtures for your end-to-end testing needs.
  8. Execute Multiple Test Cases: Explore different scenarios for running multiple test cases in pytest from a single file.
  9. Stop Test Suite after N Test Failures: See how to stop your test suite after n test failures in pytest using the @pytest.mark.incremental decorator and maxfail command-line option.

YouTube

Skim our below pytest tutorial playlist to get started with automation testing using the pytest framework.

https://www.youtube.com/playlist?list=PLZMWkkQEwOPlcGgDmHl8KkXKeLF83XlrP

Run Pytest automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful