import pytest


@pytest.fixture(autouse=True)
def tagschecker(request):
    tags = set(request.config.getini('TAGS'))

    tags_marker = request.node.get_marker('tags')
    xfailtags_marker = request.node.get_marker('xfailtags')
    skiptags_marker = request.node.get_marker('skiptags')

    if tags_marker and tags.isdisjoint(set(tags_marker.args)):
            pytest.skip('skipped for this tags: {}'.format(tags))
    elif skiptags_marker and not tags.isdisjoint(set(skiptags_marker.args)):
            pytest.skip('skipped for this tags: {}'.format(tags))
    elif xfailtags_marker and not tags.isdisjoint(set(xfailtags_marker.args)):
            request.node.add_marker(pytest.mark.xfail())

@@ -288,16 +288,21 @@
 %0A    if 
+xfail
 tags_mar
@@ -309,16 +309,20 @@
 ker and 
+not 
 tags.isd
@@ -333,16 +333,21 @@
 int(set(
+xfail
 tags_mar
@@ -370,63 +370,50 @@
     
-  
-  pytest.skip('skipped for this tags: %7B%7D'.format(tags
+request.node.add_marker(pytest.mark.xfail(
 ))%0A 
@@ -420,20 +420,26 @@
    elif 
-skip
+(%0A        
 tags_mar
@@ -438,36 +438,32 @@
 tags_marker and 
-not 
 tags.isdisjoint(
@@ -466,20 +466,16 @@
 int(set(
-skip
 tags_mar
@@ -484,29 +484,28 @@
 r.args))
-:%0A   
+ or%0A
         
  pytest.
@@ -500,77 +500,12 @@
     
- pytest.skip('skipped for this tags: %7B%7D'.format(tags))%0A    elif xfail
+skip
 tags
@@ -532,37 +532,36 @@
 .isdisjoint(set(
-xfail
+skip
 tags_marker.args
@@ -554,32 +554,38 @@
 gs_marker.args))
+%0A    )
 :%0A            re
@@ -582,53 +582,58 @@
     
-    request.node.add_marker(pytest.mark.xfail(
+pytest.skip('skipped for this tags: %7B%7D'.format(tags
 ))%0A

Set xfailtags as first priority