(fig1, renderer)
| 217 | # ------- |
| 218 | @pytest.mark.parametrize("renderer", ["browser", "chrome", "chromium", "firefox"]) |
| 219 | def test_browser_renderer_show(fig1, renderer): |
| 220 | pio.renderers.default = renderer |
| 221 | renderer_obj = pio.renderers[renderer] |
| 222 | using = renderer_obj.using |
| 223 | if not isinstance(renderer_obj.using, tuple): |
| 224 | using = (using,) |
| 225 | |
| 226 | # Setup mocks |
| 227 | mock_get = MagicMock(name="test get") |
| 228 | mock_browser = MagicMock(name="test browser") |
| 229 | mock_get.return_value = mock_browser |
| 230 | |
| 231 | request_responses = [] |
| 232 | |
| 233 | def perform_request(url): |
| 234 | request_responses.append(requests.get(url)) |
| 235 | |
| 236 | def open_url(url, new=0, autoraise=True): |
| 237 | print("open url") |
| 238 | # Perform request in thread so that we don't block |
| 239 | request_thread = threading.Thread(target=lambda: perform_request(url)) |
| 240 | request_thread.daemon = True |
| 241 | request_thread.start() |
| 242 | |
| 243 | mock_browser.open.side_effect = open_url |
| 244 | |
| 245 | with mock.patch("webbrowser.get", mock_get): |
| 246 | pio.show(fig1) |
| 247 | |
| 248 | # check get args |
| 249 | mock_get.assert_any_call(using[0]) |
| 250 | |
| 251 | # check open args |
| 252 | mock_call_args = mock_browser.open.call_args |
| 253 | mock_arg1 = mock_call_args[0][0] |
| 254 | mock_arg1.startswith("http://127.0.0.1:") |
| 255 | |
| 256 | mock_kwargs = mock_call_args[1] |
| 257 | assert mock_kwargs == dict(new=renderer_obj.new, autoraise=renderer_obj.autoraise) |
| 258 | |
| 259 | # Give request content a little time to show up |
| 260 | tries = 0 |
| 261 | while tries < 5 and not request_responses: |
| 262 | time.sleep(0.5) |
| 263 | |
| 264 | # Check request content |
| 265 | assert len(request_responses) == 1 |
| 266 | response = request_responses[0] |
| 267 | assert response.status_code == 200 |
| 268 | html = response.content.decode("utf8") |
| 269 | assert_full_html(html) |
| 270 | assert_offline(html) |
| 271 | |
| 272 | |
| 273 | # Validation |
nothing calls this directly
no test coverage detected