Задача:
есть регулярка в файле match.txt и есть тест-кейсы в файле tsv.
Формат tsv
query match
jordan belfort False
"Иван Петров Petr Volikin
1
moscow Markus" False
RUSSIA Ivan JOHN False
Нужно чекнуть регулярка матчит(если true) или не матчит(если false).
Вот мой код
import pytest
import re
import pandas as pd
path = 'match.txt'
regexs = []
with open(path, "r", encoding="utf8") as r_file:
for line in r_file:
stripped = line.rstrip('\r\n')
if stripped:
regexs.append("(" + stripped + ")")
if len(regexs) > 0:
regex = "|".join(regexs)
regex = re.compile(regex)
tests = pd.read_csv('tsur.tsv', sep='\t')
@pytest.mark.parametrize(('test_input', 'expected'), ([tests]))
def test_match(test_input, expected):
assert bool(regex.search(test_input)) is expected
Я понимаю, что ошибка в строке
@pytest.mark.parametrize(('test_input', 'expected'), (tests))
Ошибка
in "parametrize" the number of names (2):
('test_input', 'expected')
must be equal to the number of values (2897)
как мне запихнуть это все в цикл?