Наличие на тестов подпакет без предварително импортиране на вашия пакет

Имам следната структура на директорията

package
    __init__.py
    module1
        model1.py
    tests
        __init__.py
        common.py
        test_module1
            test_model1.py

Трябва да:

  1. Имате къде да поставите общи „помощници“ за тестове, като например споделени данни. В момента използвам common.py. Мисля, че това налага наличието на __init__ в пътя tests, така че тестовите файлове да могат да импортират общи.
  2. Не импортирам package преди да изпълня тестове, защото трябва да тествам дали конфигурациите се зареждат правилно (и затова трябва да направя промени в променливите на средата, преди да импортирам package и да тествам, че преминава през неговите конфигурации). Nosetests изглежда настоява за импортиране на package, ако tests е пакет (т.е. ако има __init__ в тестовете).

Има ли начин това да стане? Или трябва да променя настройките си? Мога да имам common в package директно, въпреки че това изглежда неудобно.

Въпрос, който засяга този проблем: Импортиране на Python за тестове с помощта на nose - каква е най-добрата практика за импортиране на модули над текущия пакет


person Maximilian    schedule 10.01.2016    source източник
comment
Какво не е наред с поставянето на __init__.py, независимо къде поставяте common.py вашата директория с тестове трябва да има __init__.py, в противен случай носът няма да може да открие тестове от директорията tests   -  person Kashif Siddiqui    schedule 14.03.2017