Skip to content

Commit 047a9cc

Browse files
BeyondEvilnicoddemus
authored andcommitted
Handle removal of MarkInfo in pytest 4.1.0 (#207)
Fixes #206
1 parent 1ced400 commit 047a9cc

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed

pytest_selenium/drivers/cloud.py

+15
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,18 @@ def get_credential(self, key, envs):
3838

3939
def uses_driver(self, driver):
4040
return driver.lower() == self.name.lower()
41+
42+
43+
def get_markers(node):
44+
# `MarkInfo` is removed in pytest 4.1.0
45+
# see https://github.com/pytest-dev/pytest/pull/4564
46+
try:
47+
from _pytest.mark import MarkInfo
48+
49+
keywords = node.keywords
50+
markers = [m for m in keywords.keys() if isinstance(keywords[m], MarkInfo)]
51+
except ImportError:
52+
# `iter_markers` was introduced in pytest 3.6
53+
markers = [m.name for m in node.iter_markers()]
54+
55+
return markers

pytest_selenium/drivers/saucelabs.py

+2-5
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@
55
import os
66
import json
77

8-
from _pytest.mark import MarkInfo
98
from py.xml import html
109
import pytest
1110
import requests
1211

13-
from pytest_selenium.drivers.cloud import Provider
12+
from pytest_selenium.drivers.cloud import Provider, get_markers
1413

1514

1615
class SauceLabs(Provider):
@@ -85,8 +84,6 @@ def pytest_selenium_runtest_makereport(item, report, summary, extra):
8584

8685
def driver_kwargs(request, test, capabilities, **kwargs):
8786
provider = SauceLabs()
88-
keywords = request.node.keywords
89-
markers = [m for m in keywords.keys() if isinstance(keywords[m], MarkInfo)]
9087

9188
_capabilities = capabilities
9289
if os.getenv("SAUCELABS_W3C") == "true":
@@ -95,7 +92,7 @@ def driver_kwargs(request, test, capabilities, **kwargs):
9592
_capabilities.setdefault("username", provider.username)
9693
_capabilities.setdefault("accessKey", provider.key)
9794
_capabilities.setdefault("name", test)
98-
tags = _capabilities.get("tags", []) + markers
95+
tags = _capabilities.get("tags", []) + get_markers(request.node)
9996
if tags:
10097
_capabilities["tags"] = tags
10198

pytest_selenium/drivers/testingbot.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
44

55
import pytest
6-
from _pytest.mark import MarkInfo
6+
77
from py.xml import html
88
import requests
99

10-
from pytest_selenium.drivers.cloud import Provider
10+
from pytest_selenium.drivers.cloud import Provider, get_markers
1111

1212
HOST = "hub.testingbot.com"
1313
PORT = 443
@@ -86,12 +86,11 @@ def pytest_selenium_runtest_makereport(item, report, summary, extra):
8686

8787
def driver_kwargs(request, test, capabilities, host, port, **kwargs):
8888
provider = TestingBot(host, port)
89-
keywords = request.node.keywords
89+
9090
capabilities.setdefault("name", test)
9191
capabilities.setdefault("client_key", provider.key)
9292
capabilities.setdefault("client_secret", provider.secret)
93-
markers = [m for m in keywords.keys() if isinstance(keywords[m], MarkInfo)]
94-
groups = capabilities.get("groups", []) + markers
93+
groups = capabilities.get("groups", []) + get_markers(request.node)
9594
if groups:
9695
capabilities["groups"] = groups
9796
kwargs = {

0 commit comments

Comments
 (0)