TST: strictly xfail mid-test
- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] passes `black pandas`
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Using `pytest.xfail` when a test is running will immediately stop the test and will not xpass if test would otherwise succeed. It doesn't seem to be documented anywhere, but an alternative would be to use the request fixture. In this demo, I've added an xfail that runs successfully, making the test fail (xpass).

If this looks like a good idea, I can make a tracking issue to replace `pytest.xfail` with the method used here.

a fair amount of the xfails are already like this

sure i think we should be consistent and change then all @jreback Not certain, but I think you may be referring to using the `pytest.mark.xfail` decorator. The decorator has limitations, in the case shown here it can't be used with the fixture `transformation_func`. 

A search for "applymarker" turns up empty across all our tests. not at all search for

```           
mark = pytest.mark.xfail(
                reason="BUG: it must be pd.Series([1, 1, 3, 4], dtype=np.int16"
            )
request.node.add_marker(mark)
```
for example

```
~/pandas$ grep -r add_marker pandas | wc
      49      99    4128
``` Thanks, `request.applymarker` is the same as `request.node.add_marker`, I'll stick to add_marker for consistency. yeah i think @jbrockmendel started putting these in recently. we should change all occurernces, update the docs and put in a pre-commit hook (once all fixed).