Hamcrest утверждение для списка ndarray и строк

Я пытаюсь изменить существующее утверждение Hamcrest, чтобы отразить изменения в кодовой базе. Ранее тестируемая функция возвращала список двумерных ndarrays.

[array([6.55258911, 8.86439133]), array([7.80198384, 7.59625325]), ..]

Утверждение, чтобы захватить это было следующим:

@staticmethod
def test_generate_readings_returns_list_of_correct_type(sensor, length=100):
    assert_that(
        sensor.generate_readings(length=length), 
        only_contains(instance_of(ndarray))
    )

Изменения в sensor.generate_readings() теперь означает, что функция возвращает список ndarrays и сопровождающую метку. На этикетке всегда должно быть написано 'valid' или же 'anomalous'

Пример вызова обновленного sensor.generate_readings(length=2) показано ниже:

[(array([-0.64136056, -0.50703576]), 'valid'),
 (array([-0.38374486, -1.25771811]), 'valid')]

Мое модифицированное утверждение:

@staticmethod
def test_generate_readings_returns_list_of_correct_type(sensor, length=100):
    assert_that(
        sensor.generate_readings(length=length),
        only_contains((instance_of(ndarray), any_of('valid', 'anomalous')))
    )

Это приводит к следующей ошибке:

self = <hamcrest.core.core.isequal.IsEqual object at 0x10863a7f0>
item = array([0.19394019, 0.87763431]), mismatch_description = None

    def matches(self, item, mismatch_description=None):
        match_result = self._matches(item)
>       if not match_result and mismatch_description:
E       ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Это та проблема, которая требует специального сопоставления?

Любая помощь в решении этого была бы очень признательна.

0 ответов

Другие вопросы по тегам