0

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()
Kingamajick
  • 2,281
  • 1
  • 16
  • 19

1 Answers1

1

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))
brunns
  • 2,689
  • 1
  • 13
  • 24