def test_with_correct_data():
    assert get_attack_value('fire', ['grass']) == 2
    assert get_attack_value('fighting', ['ice', 'rock']) == 4
    assert get_attack_value('psychic', ['poison', 'dark']) == 0
    assert get_attack_value('water', ['normal']) == 1
    assert get_attack_value('fire', ['rock']) == 0.5
    assert get_attack_value('fire', ['bug', 'steel', 'grass', 'rock']) == 4
def test_with_unknown_type():
    with pytest.raises(pokemons_exceptions.AttackNotDefinedError):
        get_attack_value('rock', ['ice', 'fjklbwes'])
def test_invalid_input_data_types_error_without_str_in_list():
    with pytest.raises(pokemons_exceptions.InvalidInputDataTypesError):
        get_attack_value('fire', ['rock', 2])
def test_empty_str_in_list():
    with pytest.raises(pokemons_exceptions.EmptyInputStringError):
        get_attack_value('rock', ['rock', '', 'ice'])
def test_invalid_input_data_types_error_without_str():
    with pytest.raises(pokemons_exceptions.InvalidInputDataTypesError):
        get_attack_value(4, ['ice', 'rock'])