Home > Back-end >  Pytest fails when using pyhamcrest raises
Pytest fails when using pyhamcrest raises

Time:11-24

Currently I have a test cases like the following:

    def test_foo(self):
        assert_that(self.target.do(), raises(FileNotFoundError))

Which passes using the standard python unittest framework, however if I change to use pytest, it fails. Switching to the pytest syntax works (as below), but why doesn't the pyhamcrest matcher work in this case?

    def test_foo(self):
        with pytest.raises(FileNotFoundError):
             self.target.do()

CodePudding user response:

PyHamcrest's raises() matcher requires you to make the call with the calling() function - see the tutorial. So, in your case you'd want:

assert_that(calling(self.target.do), raises(FileNotFoundError))
  • Related