-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Репозиторій robot_tests містить тести до системи електронних закупівель ProZorro, що призначені для перевірки правильності роботи центральної бази даних (ЦБД) та майданчиків.
У системі передбачено три ролі користувачів:
- замовник
- постачальник
- спостерігач
Користувачі мають можливість працювати з тендерами за допомогою різних майданчиків. Функціонал і графічний інтерфейс майданчиків відрізняється. Тести дозволяють перевірити будь-яку комбінацію користувачів - як на одному майданчику, так і на різних. Тести перевіряють усі аспекти роботи з системою - від оголошення до визначення переможця.
Для роботи тестів потрібні:
- Python 2.7
- Git
- GCC
- Development-версії Python 2.7, libyaml, libjpeg, zlib
- Для Fedora / CentOS / RHEL потрібен пакет redhat-rpm-config
- Рекомендовано використовувати virtualenv
Щоб встановити їх для Fedora:
sudo dnf install python2-devel git gcc libyaml-devel libjpeg-devel redhat-rpm-config zlib-devel
Для openSUSE і інших RPM-дистрибутивів список пакетів такий самий, але замість dnf використовується інший пакетний менеджер, наприклад, zypper. Також пакет python2-devel може називатись python-devel.
Для Debian і похідних дистрибутивів (Ubuntu, Mint):
sudo apt-get install python-minimal python2.7-dev git gcc libyaml-dev libjpeg-dev libz-dev
Для встановлення тестів:
-
- Завантажте репозиторій з кодом та перейдіть в новостворений каталог:
git clone git://github.com/openprocurement/robot_tests.git
cd robot_tests
-
- Перейдіть з гілки
masterна гілку2.3.x:
- Перейдіть з гілки
git checkout 2.3.x
-
- Підготуйте середовище:
python2 bootstrap.py
bin/buildout -N
Система Buildout завантажить компоненти та встановить усе необхідне для запуску тестів.
Також виконання bin/buildout буває потрібним після оновлення пакету з Git, зокрема, коли змінюються версії залежностей.
Якщо ви отримуєте помилку, пов'язану з HTTPS/SSL, встановіть в системі пакет ca-certificates.
Для запуску виконайте:
bin/openprocurement_tests
Якщо запустити тести без аргументів, то виконується тестування ЦБД на пісочниці за допомогою доступу до API.
За допомогою аргументів скрипт openprocurement_tests дає змогу перевизначити користувачів для ролей в тестах. Це дозволяє протестувати не лише ЦБД, але й різні майданчики. Запуск тестів виглядатиме так:
bin/openprocurement_tests -v BROKER:BrokerName -v ROLE:RoleName
Тут BrokerName – ім'я майданчика, що тестується, і RoleName – ім'я ролі, яка тестується на цьому майданчику. Решта ролей при цьому працюють безпосередньо з API ЦБД.
Доступні ролі: tender_owner, provider, provider1, viewer. Якщо вказати лише майданчик, то для нього автоматично буде вибрана роль viewer. Зверніть увагу: імена ролей і майданчиків чутливі до регістру.
За замовчуванням виконуються всі наявні test suite. Щоб вибрати test suite, використовуйте опцію -s:
bin/openprocurement_tests -s reporting -s negotiation
В цьому прикладі буде виконано reporting.robot і negotiation.robot.
Якщо для одної з ролей використовується робота з ЦБД напряму, а не через майданчик, то можна вибрати версію API, до якої будуть надсилатись запити, і нестандартну адресу сервера. Приклад:
bin/openprocurement_tests -v API_VERSION:0.12 -v API_HOST_URL:http://localhost:6543/
В кореневому каталозі і каталозі op_robot_tests/ знаходяться службові файли, потрібні для запуску пакету. В каталозі op_robot_tests/tests_files/ знаходяться основні дані – тестові сценарії, бібліотеки ключових слів, опис майданчиків, дані про користувачів тощо. Всі шляхи, наведені нижче, слід шукати в op_robot_tests/tests_files/.
Конфігурація тестів відбувається в YAML файлах.
Для повноцінного тестування майданчик мусить додати чотирьох користувачів:
- одного замовника -
tender_owner - двох постачальників -
provider,provider1 - одного глядача (може бути анонімним) -
viewer
Усіх користувачів, що можуть бути задіяні в тестах, потрібно описати в файлі data/users.yaml.
У корені файла є словник users, який містить у собі усіх користувачів.
Елементами словника users є користувачі, де описано їх дані у вигляді зіставлення, як описано тут: https://uk.wikipedia.org/wiki/YAML#Зіставлення+імені+та+значення
Обов’язковим є поле broker - майданчик, до якого належить користувач.
Також користувач може містити відомості про його переглядач, розмір вікна, лоґін в майданчик та будь-які інші дані необхідні для тесту.
users:
Demo_Owner:
username: demo0
password: Password1
broker: Demo
Demo_User:
broker: Demo
username: demo1
password: openproc
browser: chrome
size: [640, 450]
Demo_User1:
broker: Demo
username: demo2
password: pwd1234
browser: firefox
Demo_Viewer:
broker: Demo
browser: firefox
Опис майданчика здійснюється в файлі data/brokers.yaml.
У корені файла міститься список усіх майданчиків, а також словник Default, який містить значення за замовчуванням.
В описі майданчика обов’язково містяться поля:
-
keywords_file, значенням якого є назва бібліотеки ключових слів (реалізації тестів) майданчика. Ця назва відповідає імені файла без розширення.robotв каталозіbrokers/, -
roles— словник, у якому для кожної ролі встановлюється ім'я користувача з файлаdata/users.yaml.
Необов'язкові поля:
-
timeout_on_wait— максимальний час очікування на відповідь від майданчика, період синхронізації з ЦБД. -
period_interval— інтервал між періодами в хвилинах. За допомогою цього числа можливо регулювати, як довго будуть тривати періоди тендера.
Якщо необов'язкове поле присутнє, то воно використовується, інакше береться значення за замовчуванням із словника Default.
Детальніше про бібліотеку тестів майданчика в розділі Перелік ключових слів
Default:
period_interval: 10
timeout_on_wait: 7
Demo:
keywords_file: demo_broker
timeout_on_wait: 4
roles:
tender_owner: Demo_Owner
provider: Demo_Provider
provider1: Demo_Provider1
viewer: Demo_Viewer
BoringBroker:
keywords_file: boring_br
roles:
tender_owner: Boring_Boss
viewer: Boring_Viewer
В цьому прикладі для брокера BoringBroker не задані користувачі для ролей provider і provider1, тому через цей майданчик неможливо буде здійснити дії, для яких потрібні ці користувачі (наприклад, подати цінову пропозицію).