Pytest fails when using pyhamcrest raises

229 views Asked by At

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()
1

There are 1 answers

0
brunns On BEST ANSWER

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))