Как организовать и проводить юнит-тесты и функциональные тесты отдельно, используя тесты на носу - PullRequest
9 голосов
/ 08 ноября 2011

У меня есть следующая типичная структура файла проекта Python

packageA
   +----subpackage1
            +----classa.py
   +----subpackage2
            +----classb.py
   +----test
          +----subpackage1
                    +----classa_test.py 
          +----subpackage2
                    +----classb_test.py

В настоящее время я пытаюсь организовать свои юнит-тесты и функциональные тесты, чтобы я мог проводить юнит-тесты и функциональные тесты отдельно, используя нос, но у меня также есть возможность запускать все тесты. Тесты будут находиться в packageA / test / subpackage1 и packageA / test / subpackage2.

  • Что такое хороший способ организовать различные тесты? По папке (функционал / против единицы /)? По соглашению об именовании тестового класса (ClassATest против ClassAFunctionalTest)? или по соглашению об именовании тестовых методов (classa_foo_test против classa_bar_functional_test)?
  • Может кто-нибудь объяснить, как работает сравнение регулярных выражений в тестах на нос? Опции -m, -i и -e не запускаются так, как я ожидаю. Совпадает ли регулярное выражение с каталогами (subpackage1), файлами (classa_test) или тестовыми классами (ClassATest) или тестовыми методами (classa_foo_test)? Я в замешательстве

Ответы [ 3 ]

7 голосов
/ 08 ноября 2011

Моя структура каталогов тестов выглядит следующим образом:

root
  + --- tests
  |       + --- unit_tests
  |       |         + --- some_app_tests   
  |       |         + --- another_app_tests
  |       |         | run_tests.py
  |       |
  |       + --- integrate_tests 
  |                 + --- some_app_tests
  |                 + --- another_app_tests
  |                 | run_tests.py
  |       
  + --- project_root
          + --- some_app
          + --- another_app

Для каждого отдельного приложения я создаю coresponding каталог с тестами в директории unit- и integrate. Каждый каталог является отдельным проектом django с пользовательскими настройками, и для запуска тестов есть команда управления.

Кроме того, размещение тестов в одном каталоге имеет одно приятное преимущество - когда проект развертывается, нет смысла развертывать тесты вместе с ним. Поэтому я просто убираю один каталог и все.

(для запуска тестов я использую django-sane-testing: https://github.com/Almad/django-sane-testing)

1 голос
/ 27 января 2012

Если вы разрабатываете проект Django, вы можете попробовать эту библиотеку: unclebob https://github.com/gabrielfalcao/unclebob

Он предлагает способ организации и запуска ваших модульных и функциональных тестов.

0 голосов
/ 08 ноября 2011

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

Но если вы, например, тестируете область входа для веб-страницы, создайте подпапку с именем «login» или «loginTests», а для проверки меню создайте папку «menu» или «menuTests».Всегда хорошо иметь хорошие соглашения об именах, поэтому назовите тест и папки в точности так, как они тестируют.Будьте настолько конкретны, насколько можете.

...