New issue 725: Markers are transferred from subclasses to base class methods
https://bitbucket.org/pytest-dev/pytest/issue/725/markers-are-transferred-from-subclasses-to

foobarbazquux:

pytest transfers markers from subclasses to base class methods, which can 
result in incorrect test selection.

Example code:
```
#!python
import pytest

class BaseClass():
    def test_foo(self):
        pass

class Test1(BaseClass):
    @pytest.mark.test1
    def test_test1(self):
        pass

class Test2(BaseClass):
    @pytest.mark.test2
    def test_test2(self):
        pass
```

Example run showing the `test1` marker also being applied to the `Test2` base 
class:
```
$ py.test -v --collect-only -m test1
================================================================================
 test session starts 
================================================================================
platform darwin -- Python 2.7.8 -- py-1.4.26 -- pytest-2.6.4 -- 
/usr/local/opt/python/bin/python2.7
collected 4 items
<Module 'test_example.py'>
  <Class 'Test1'>
    <Instance '()'>
      <Function 'test_foo'>
      <Function 'test_test1'>
  <Class 'Test2'>
    <Instance '()'>
      <Function 'test_foo'>

======================================================================== 1 
tests deselected by "-m 'test1'" 
=========================================================================
=========================================================================== 1 
deselected in 0.01 seconds 
===========================================================================
```

More detail from `ronny` via IRC:
```
1:52 ronny joesmith: ah, i figured the bug
1:52 ronny hpk: marker transfer to base class test methods fails
1:52 ronny joesmith: we have a mechanism that transfers test markers from the 
classes to the methods
1:53 ronny joesmith: due to a misstake they trasnfer subclass markers to base 
class methods
1:53 ronny can you report a issue, i think we can issue a fix this weekend
1:55 ronny hpk: markers on a subclass transfer to a base class method
1:57 ronny 
https://bitbucket.org/pytest-dev/pytest/src/tip/_pytest/python.py#cl-351 is the 
"bad" call site
1:58 ronny and 
https://bitbucket.org/pytest-dev/pytest/src/tip/_pytest/python.py#cl-437 is the 
implementation
2:01 ronny hpk: its not an easy fix ^^
2:02 ronny hpk: as far as i can tell marker transfer should be part of the 
marker plugin and the item marker set should be detached from the per object 
markers
2:03 ronny its a minor restructuring but it has external facing api implications
```


_______________________________________________
pytest-commit mailing list
pytest-commit@python.org
https://mail.python.org/mailman/listinfo/pytest-commit

Reply via email to