2016-12-21 13 views
1

Я написал тесты pytest единицы для упаковки, которую я написал со структурой, как показано ниже:Использование параметров командной строки с pytest --pyargs

  • PackageDir
    • setup.py
    • MyPackage
      • __init__.py
      • functionpackage
        • __init__.py
        • functionmodule.py
      • тест
        • __init__.py
        • conftest.py
        • unit_tests
          • __init__.py
          • е unctionmodule_test.py

Теперь PackageDir/MyPackage/тест/conftest.py устанавливает два требуемые параметры командной строки, которые будут созданы в качестве приспособлений для испытаний. Когда я запускаю что-то вроде:

pytest packagedir/mypackage/ --var1 foo --var2 bar 

Все тесты выполняются, и параметры командной строки читаются правильно. Тем не менее, когда я пип установить пакет (который устанавливает тестовые и unit_tests пакеты правильно), а затем попробовать что-то вроде этого:

pytest --pyargs mypackage --var1 foo --var2 bar 

Я получаю сообщение об ошибке, как это:

usage: pytest [options] [file_or_dir] [file_or_dir] [...] 
pytest: error: unrecognized arguments: --var1 foo --var2 bar 

Если я бегу:

pytest --pyargs mypackage 

тесты проходят, но не работают, потому что аргументов командной строки нет.

Может кто-нибудь объяснить мне, что здесь может быть неправильным? Я мог догадаться и сказать, что это потому, что аргумент -pyargs меняет интерпретацию параметров командной строки для pytest, но это всего лишь предположение. Я хотел бы знать, действительно ли я могу это исправить.

Главной целью было бы разрешить кому-то установить mypackage, а затем легко протестировать его, не перейдя на сайт установки пакетов.

ответ

1

Я добавил __main__.py в каталог mypackage/test и написал

import os 
import sys 

HERE = os.path.dirname(__file__) 

if __name__ == "__main__": 
    import pytest 
    errcode = pytest.main([HERE] + sys.argv[1:]) 
    sys.exit(errcode) 

Теперь я могу выполнить тесты с

python -m mypackage.test --myoption=works 

Это работает при установке пакета.

Вы можете посмотреть это в действии с Travis сборки:

 Смежные вопросы

  • Нет связанных вопросов^_^