On Wed, Jan 4 2023 at 09:26:10 AM +00:00:00, Sofia Enriquez <senrique@redhat.com> wrote:
Hi,

Since python3.11 mocks can no longer be provided as the specs for other Mocks. As a result, an already-mocked object cannot be passed to mock.Mock(). This can uncover bugs in tests since these Mock-derived Mocks will always pass certain tests (e.g. isinstance) and built-in assert functions (e.g. assert_called_once_with) will unconditionally pass.[1]

There's a bug report to track this issue in Cinder [2] but I think this may affect other projects too.

I've reproduce the error and most drivers fail with:
```
unittest.mock.InvalidSpecError: Cannot spec a Mock object. [object=<Mock name='mock.client.HPE3ParClient' id='139657768087760'>]
```


Nova went through this and removed double mocking during Zed. Here are the patches: https://review.opendev.org/q/topic:unittest.mock+%2522double+mocking%2522  Maybe you can use it for ideas how to deal with different double mocking scenarios: 
 
Cheers,
gibi

Cheers,
Sofia

--

Sofía Enriquez

she/her

Software Engineer

Red Hat PnT

IRC: @enriquetaso