class_docstr: Test VIIRS SDR downloading.
class_docstr_tok: ["Test","VIIRS","SDR","downloading","."]
docstr: Test downloading and re-downloading VIIRS SDR DNB data with select granules.
docstr_tok: ["Test","downloading","and","re-downloading","VIIRS","SDR","DNB","data","with","select","granules","."]
code: def test_download_channels_num_granules_dnb(self, requests, tmpdir):
      """Test downloading and re-downloading VIIRS SDR DNB data with select granules."""
      from satpy.demo import get_viirs_sdr_20170128_1229
  
      requests.get.side_effect = _FakeRequest
      with mock_filesystem():
          files = get_viirs_sdr_20170128_1229(
              base_dir=str(tmpdir),
              channels=("DNB",),
              granules=(5, 6, 7, 8, 9),
          )
          assert len(files) == 5 * (
              1 + 1
          )  # 5 granules * (1 DNB + 1 geolocation)
          self._assert_bands_in_filenames_and_contents(
              ("SVDNB", "GDNBO"), files, 5
          )
  
imports: from __future__ import annotations
  import contextlib
  import io
  import os
  import sys
  import tarfile
  import unittest
  from collections import defaultdict
  from unittest import mock
  import pytest
label_desc: Use image node_id 5 for calling the TestVIIRSSDRDemoDownload obj's underlying member method code with example usage: obj.test_download_channels_num_granules_dnb(requests, tmpdir) without return types