Uri Even-Chen wrote: > Hi, > > We are using unittest.TestCase.assertRaisesRegex in our Django project > (Speedy Net / Speedy Match - https://github.com/urievenchen/speedy-net), > and I always prefer calling Python function parameters by name. So we call > self.assertRaisesRegex with parameters (keyword arguments) > expected_exception, expected_regex and callable - as documented on > https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRaisesRegex > . You can see our code on > https://github.com/urievenchen/speedy-net/blob/master/speedy/core/accounts/tests/test_models.py > . When I run tests regularly (with "./manage.py test") they pass, But when > I run tests with "python -W error::DeprecationWarning manage.py test", > (with Python 3.5.5), I receive errors like this: > > DeprecationWarning: 'callable' is an invalid keyword argument for this > function > > See the full errors here: > https://travis-ci.org/urievenchen/speedy-net/jobs/410482655 (by the way, > with Python 3.4.6 the tests pass).
No, the function to be tested is not run at all (it looks like callable was called callable_obj back then): $ cat unittest_regex.py import unittest def foo(*args, **kw): print("RUNNING FOO") class T(unittest.TestCase): def test_baz(self): self.assertRaisesRegex( expected_exception=ValueError, expected_regex="bar", callable=foo ) if __name__ == "__main__": unittest.main() $ python3.4 unittest_regex.py . ---------------------------------------------------------------------- Ran 1 test in 0.000s OK > Do you know what is the problem and why I receive these deprecation > warnings? Apparently they want you to use the context manager ;) Like with self.assertRaisesRegex(ValueError, "bar"): foo() Clean, readable, robust -- but no keyword args. -- https://mail.python.org/mailman/listinfo/python-list