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 ==========