Вопрос по проектированию тестов: как должны располагаться тесты по файлам?

Добрый вечер. Проектирую тесты таким образом, что тестовая логика отдельно от вспомогательной. Подскажите как правильно по науке должна распологаться тестовая логика? В одном файле все тесты? или может разделять файлы по тестовым наборам - то есть сколько наборов столько и файлов с тестами? Или может быть как то ещё?
Заранее спасибо за ответы.

In my case (i use java) i put one testSuite into one class:

  1. Easy to do common preparation and initialization
  2. More easy to run several group or tests related to some specific part of app
  3. Possible to divide for general groups and implement specific Base class for each group
  4. In this way you will comply single responsibility principle

У нас так - для каждого проекта свой набор локаторов и страниц (у вас же page object pattern).

Структура самого проекта у нас простая:

…\p\base.py
…\p\pages.py
…\l\locators.py – локаторы. Иногда делаем несколько файлов, если локаторов много.
…\PT1010000 – некая группа тестов. 2 цифры - раздел, потом 2 цифры - подраздел, и 3 цифры - порядковый номер.
…\PT1010000\test_1010001.py
…\PT1010000\test_1010002.py
…\PT1011000 – вторая группа тестов
…\PT1011000\test_1011001.py
…\PT1011000\test_1011002.py

Выше на один каталог лежат утилиты общие для всех проектов в каталоге utl. Там хранятся скрипты для работы с файловой системой, с БД Oracle и т.д.

А раздел и подраздел это для разделения на тестовые наборы? И как определить какие тесты будут распологаться в файле 01, а какие в 02 например?

У нас специфика веб-приложения такая: есть основное меню и подменю, поэтому раздел и подраздел родились сам по себе.

Для чего так разделили? Чтобы массово запускать тесты одного типа, код ведь числовой. Да, по сути - тестовые наборы.

Как определить - какие тесты в каком файле? Строятся на основании тест-кейсов, их пишем не мы. Их тоже не стали усложнять: выделяем позитивные end-to-end сценарии, где проверка происходит только по факту совершения некой операции, негативные, и несколько на валидацию полей.

Что такое PT - это Payments and Transfers (платежи и переводы), то по коду понятно, к чему относится тест. По ним один -два теста - сквозные, положительные. Остальные - на валидацию полей. В каждом тесте ссылка на тест-кейс (сделал на вики хранение тест-кейсов, как временно-постоянное решение). В самом тест-кейсе - ссылка на jenkins. В общем - не путаемся.

Но это наш маленький полугодовой опыт ). Если вдруг в этом посте будут оптимальные решения - тоже хотелось бы послушать.