Генерация уникальных идентификаторов, которые не повторяются в гипотезе - PullRequest
0 голосов
/ 14 мая 2018

Я хочу создать уникальные идентификаторы, которые не повторяются.Я пытался использовать st.uuids ()

Это мой код

class MyTest(<class that inherits from unittest.TestCase>)
  @hypothesis.seed(0)
  @hypothesis.settings(derandomize=True)
  @hypothesis.setting(use_coverage=False)
  @hypothesis.given(st.uuids())
  def test(self, test_id):
    logging.info('test_id %s', test_id)
    logging.info('self.ids %s', self.ids)
    if test_id in self.ids:
      logging.info('SHOULD NOT BE HERE')
    else:
      logging.info('HAPPY')
      self.ids.append(test_id)

Однако я получаю 1 повтор.Любые советы о том, как избежать повторений?

test_id 5bc8fbbc-bde5-c099-4164-d8399f767c45

self.ids [UUID ('e3e70682-c209-4cac-629f-6fbed82c07cd'), UUID ('1ee77147-c7be-894d-5073-79c36d3c338d'), UUID ('734007f9-e3b1-3a59-bac6-78e47a6e8c0f'), UUID ('97343ee7-03f6-c7c0-d0040e') ​​UU3d757d12193edd-6aac-c6b6-8caf-d66c89075de6 '), UUID (' ea37c9e0-a3f9-3fe5-0b68-afbaab69828e '), UUID (' e13a37b0-f328-3835-4a40-cfc1142ac3af366)-6b68-1fc4502323be '), UUID (' cbf97494-2dae-a0f6-43a5-5203d7fdc239 '), UUID (' 94012b2d-1221-006b-266c-7dcefecc417e '), UUID (' e05fb0-f0-f0-f0)), UUID ('c6148cd8-b446-bc4f-7fea-3b29b7b93ee5'), UUID ('cd613e30-d8f1-6adf-91b7-584a2265b1f5'), UUID ('d95bafc8-f2a4-dfb-db-db-db)5af6e118-6344-2432-9707-6fb276cfc8bf '), UUID (' c1a4bbe2-f5bc-beed-3a7c-be792b90ac94 '), UUID (' 01457085-dc53-6b6a-b47f-3aefd77685b6 '663)-a3e3-c900e848b602 '), UUID (' 21636369-8b52-9b4a-97b7-50923ceb3ffd '), UUID ('b8a1abcd-1a69-16c7-4da4-f9fc3c6da5d7 '), UUID (' 5bc8fbbc-bde5-c099-4164-d8399f767c45 ')]

НЕ СЛЕДУЕТ ЗДЕСЬ

* 1015Я вижу этот идентификатор в операторах журнала чуть выше этого.

Интересно, имеет ли @cacheable или @defines_strategy_with_reusable_values ​​какое-либо отношение к нему https://github.com/HypothesisWorks/hypothesis/blob/cedbafe52934e5f710be41c51044388ef3047850/hypothesis-python/src/hypothesis/strategies.py#L1868

1 Ответ

0 голосов
/ 26 мая 2018

Уникальные идентификаторы не повторяются в тесте . Тем не менее, гипотеза может попытаться передать любое конкретное значение в качестве входных данных во многих отдельных итерациях теста - без этого было бы невозможно обнаружить ошибки, и многие распространенные ошибки было бы гораздо труднее найти.

Вы должны убедиться, что ваши тесты не установлены и не зависят от какого-либо внешнего изменяемого состояния, или использовать методы setup_example и teardown_example для соответствующей очистки.

Это фундаментальный инвариант для сжатия, а также пример генерации.

...