parameterized icon indicating copy to clipboard operation
parameterized copied to clipboard

Support xfail inside parameterized.expand

Open dzenilee opened this issue 4 years ago • 2 comments

What's the proper way to indicate that a test will fail (e.g., pytest's "xfail") with parameterized.expand?

I've tried using pytest.mark with parameterized.expand:

import unittest
import pytest
from parameterized import parameterized

class ModelRegressionTestCase(unittest.TestCase):
    def setUp(self):
        self.model = load_model()

    @parameterized.expand(
        [
            ("Word", "Word"),
            pytest.param("Word Second", "Word second",
                         marks=pytest.mark.xfail(reason="The reason it fails")),
        ]
    )
    def test_sanity(self, x, y):
        expectation = {"answer": y, "score": 1}
        result = self.model.predict(x)
        self.assertEqual(expectation, result)

But perhaps those are incompatible. I get a TypeError:

=================================== FAILURES ===================================
____________________ ModelRegressionTestCase.test_sanity_2 _____________________

a = (<test.test_model.ModelRegressionTestCase testMethod=test_sanity_2>,)

    @wraps(func)
    def standalone_func(*a):
>       return func(*(a + p.args), **p.kwargs)
E       TypeError: test_sanity() takes 3 positional arguments but 4 were given

../.local/lib/python3.6/site-packages/parameterized/parameterized.py:533: TypeError

Does parameterized support something like xfail specifically in the context of the expand decorator?

dzenilee avatar Feb 22 '21 20:02 dzenilee

I think there's currently no way to expect an exception as beautifully as pytest.mark.xfail would allow to do.

Also, you are using pytest.param in your example, but parameterized has its own param class - it doesn't use pytest's one.

I would be very happy to see a xfail implementation in parameterized :-)

souliane avatar Apr 13 '22 13:04 souliane

Bumping this! xfail in parameterized would be a very helpful addition!

gurashish1singh avatar Dec 21 '22 15:12 gurashish1singh