2. Создаем автоматизированные тесты - Hoper/cicd-buzz GitHub Wiki

Эти тесты можно не делать, хотя для девелоперов эта возможность возможно важна.

Для размещения unit-тестов создайте в корневой директории проекта папку ‘tests’. Представленный ниже код сохраните в файл ‘test_generator.py’:

import unittest

from buzz import generator

def test_sample_single_word():
    l = ('foo', 'bar', 'foobar')
    word = generator.sample(l)
    assert word in l

def test_sample_multiple_words():
    l = ('foo', 'bar', 'foobar')
    words = generator.sample(l, 2)
    assert len(words) == 2
    assert words[0] in l
    assert words[1] in l
    assert words[0] is not words[1]

def test_generate_buzz_of_at_least_five_words():
    phrase = generator.generate_buzz()
    assert len(phrase.split()) >= 5

Тесты мы будем запускать с помощью фреймворка pytest. Для его установки потребуется Python Virtual Environment virtualenv. Сначала убедитесь, что у вас установлен virtualenv . Далее выполните следующую команду в корневой директории проекта:

[cicd-buzz] $ virtualenv venv 

В результате будет создана новая директория 'venv'. Чтобы начать использование этого окружения, выполните:

[cicd-buzz] $ source venv/bin/activate
(venv) [cicd-buzz] $

Далее создайте файл под названием ‘requirements.txt’ и пропишите там зависимость от pytest:

pytest==3.0.6

Для загрузки перечисленных в requirements.txt требований выполните команду ‘pip’:

(venv) [cicd-buzz] $ pip install -r requirements.txt

Корневая директория проекта должна выглядеть так:

cicd-buzz/
  buzz/
  requirements.txt
  tests/
  venv/

Теперь, используя виртуальное окружение, мы можем выполнить тесты из ‘test_generator.py’:

(venv) [cicd-buzz] $ python -m pytest -v tests/test_generator.py

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

========== test session starts ==========
platform darwin -- Python 2.7.10, pytest-3.0.6, py-1.4.32, pluggy-0.4.0 -- /Users/rob/projects/workspace/cicd-buzz/venv/bin/python
cachedir: .cache
rootdir: /Users/rob/projects/workspace/cicd-buzz, inifile:
collected 3 items
tests/test_generator.py::test_sample_single_word PASSED
tests/test_generator.py::test_sample_multiple_words PASSED
tests/test_generator.py::test_generate_buzz_of_at_least_five_words PASSED
========== 3 passed in 0.02 seconds ==========