Когда использовать parametrize, а когда выносить всё в отдельный тест?

Если способ проверки при разных значениях отличается, лучше вынести, но если чуть-чуть - можно оставить. В целом parametrize - он про одно и то же поведение при разных параметрах, читай один класс эквивалентности. Если способ совпадет, а вариативность входных данных к выходным данным == 1 к 1 - это идеальное применение parametrize.

Проверять исключительные ситуации лучше в отдельных тестах, потому что каждая исключительна по своему. Более 3-4 параметров parametrize тоже являются “запашком”.

Как называть переменные полей в page object’ах?

Если есть имя на фронте, используем его, если есть имя на бэке - его. Только если нет ни того ни другого, придумываем имя переменной самостоятельно.

Допустимо исключить префикс имени поля, если он уже присутствует в названии класса и переменной страницы:

  • ExperimentPage.experiment_size, experiment.experiment_size - плохо
  • ExperimentPage.size, experiment.size - хорошо