Игнорирование тестовых файлов с носом / unittest - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть два тестовых файла.

Один из них - стандартные тестовые случаи.У другого есть тесты селена в этом.У меня есть настройка файла docker-compose для запуска тестов на селен с соответствующими сервисами.

Тесты выполняются в конвейерах bitbucket.Сначала он запускает тест со стандартными TestCases.Затем на следующем шаге он использует docker-compose для запуска тестов, включающих селен, поскольку ему нужно compose для настройки служб селена.

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

Я ввел это в свой файл настроек Django, использованный для первой части тестирования:

NOSE_ARGS = [
    '--exclude=(__init__.py)',
    '--exclude=(../tests/selenium_tests.py)',
    '--exclude=(selenium_tests.py)',
    '--with-coverage',
    '--cover-package=sasite',
    '--with-xunit',
    '--xunit-file=test-results/nose/noseresults.xml',
    '--verbosity=3',
    '--cover-xml',
    '--cover-xml-file=test-results/nose/noseresults.xml',
    '--id-file=test-results/nose/noseids'
]

и в моих настройках для второго:

NOSE_ARGS = [
    '--exclude=(__init__.py)',
    '--with-coverage',
    '--cover-package=sasite',
    '--with-xunit',
    '--xunit-file=test-results/nose/noseresults.xml',
    '--verbosity=3',
    '--cover-xml',
    '--cover-xml-file=test-results/nose/noseresults.xml',
    '--id-file=test-results/nose/noseids'
]

Как видите, я хочу исключить тесты на селен для первой части и использовать их для второй.Но даже с моим исключением в nose_args он все еще запускает тесты селена в первой части.

Вот мой bitbucket-pipelines.yml:

   prod-final:
      - step:
          name: Build image, run tests, and push to Docker Hub
          caches:
            - docker
          services:
            - docker
          script:
            # Set $DOCKER_HUB_USERNAME and $DOCKER_HUB_PASSWORD as environment variables in repository settings
            - export DOCKER_HUB_USERNAME=X
            - export DOCKER_HUB_PASSWORD=XXX

            # build the Docker image (this will use the Dockerfile in the root of the repo)
            - docker build -t meleiyu/sawebsite-redesign -f Dockerfile.imagetest .
            # run tests
            - docker run meleiyu/sawebsite-redesign
            # tag Docker image
            - docker tag meleiyu/sawebsite-redesign meleiyu/sawebsite-redesign:latest
            # authenticate with the Docker Hub registry
            - docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD
            # push the new Docker image to the Docker registry
            - docker push meleiyu/sawebsite-redesign:latest      
      - step:
          name: Run second level of testing with BrowserStack
          image: docker:stable
          trigger: manual          
          caches:
            - docker
          services:
            - docker
          script:
            # Test production setup with compose
            - apk add --no-cache py-pip bash
            - pip install --no-cache docker-compose
            - docker-compose -f docker-compose.test.yml up -d --build --exit-code-from app
      - step:
          # set AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_DEFAULT_REGION as environment variables
          name: Deploy to AWS
          deployment: staging   # set to test, staging or production
          trigger: manual  # uncomment to have a manual step
          image: atlassian/pipelines-awscli
          script:
            - aws deploy push --application-name sawebsite-redesign --s3-location s3://<S3 bucket>/<s3-key> --ignore-hidden-files
            - aws deploy create-deployment --application-name sawebsite-redesign --s3-location bucket=<s3-bucket>,key=<s3-key>,bundleType=zip --deployment-group-name <deployment-group>

definitions:
  services:
    docker:
      memory: 3072

Dockerfile.imagetest для первой частии имеет параметры для исключения файла тестов селена.

Dockerfile.test и docker-compose.test.yml предназначены для второй части и не исключают файл тестов селена.

мой конфиг / настройка имеет смысл ??Правильно ли я исключаю файлы в nose_args?Потому что, как я уже сказал, он выполняет тесты на селен в первой части, когда этого не следует делать.

Любой вклад приветствуется.

Спасибо

РЕДАКТИРОВАТЬ:

Мой NOSE_ARGS сейчас:

Чтобы не игнорировать какие-либо тесты:

NOSE_ARGS = [
    '--exclude=(__init__.py)',
    '--with-coverage',
    '--cover-package=sasite',
    '--with-xunit',
    '--xunit-file=test-results/nose/noseresults.xml',
    '--verbosity=3',
    '--cover-xml',
    '--cover-xml-file=test-results/nose/noseresults.xml',
    '--id-file=test-results/nose/noseids'
]

Чтобы исключить тесты на селен:

NOSE_ARGS = [
    '--exclude=(__init__.py)',
    '--exclude=(../tests/selenium_tests.py)',
    '--exclude=(selenium_tests.py)',
    '--ignore=(selenium_tests.py)',
    '--ignore=(../tests/selenium_tests.py)',
    '--ignore-files=../tests/selenium_tests.py',    
    '--ignore-files=selenium_tests.py',    
    '--with-coverage',
    '--cover-package=sasite',
    '--with-xunit',
    '--xunit-file=test-results/nose/noseresults.xml',
    '--verbosity=3',
    '--cover-xml',
    '--cover-xml-file=test-results/nose/noseresults.xml',
    '--id-file=test-results/nose/noseids'
]

1 Ответ

0 голосов
/ 16 декабря 2018

На основе https://nose.readthedocs.io/en/latest/usage.html#cmdoption-e --exclude аргумент должен быть регулярным выражением.

Вы пробовали что-то вроде --exclude=selenium?

РЕДАКТИРОВАТЬ

Скажем, в проекте есть тест tests/integration/test_integration.py, который вы хотите игнорировать.Выполнение

nosetests -v --exclude=integration

или

nosetests -v --ignore-files=test_integration.py

делает трюк (т. Е. Выполняются все тесты, кроме тех, что в test_integration.py).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...