Commit 37b9eb5926b5f4fd633056d3359f42d32bb20df8

Authored by Myroslav Opyr
2 parents 8f5be473 11a58088

Merge pull request #40 from selurvedu/get_now

Use get_now where possible
1 1 # robot_tests
2 2
  3 +## User acceptance tests for [OpenProcurement](https://github.com/openprocurement)
  4 +
3 5 [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/openprocurement/robot_tests?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4 6
5   -## Запуск тестів ##
6   -Необхідно запустити:
7   -```
8   -bin/openprocurement_tests
9   -```
10   -
11   -В тестах використовуються користувачі, які описані в https://github.com/openprocurement/robot_tests/blob/master/op_robot_tests/tests_files/data/users.yaml. За замовчуванням тести використовують користувачів з реалізацією запитів в центральну базу за допомогою API клієнта (умовна назва Quinta). Скрипт ```bin/openprocurement_tests``` дає змогу змінити користувача для ролей.
12   -Для прикладу для тесту 'CreateTenderTest' використовуються ролі *tender_owner* та *provider*. В тесті прописано, що роль [*tender_owner* буде виконувати *Tender_Owner*](https://github.com/openprocurement/robot_tests/blob/master/op_robot_tests/tests_files/singleItemTender.robot#L16) з [відповідною реалізацією запитів](https://github.com/openprocurement/robot_tests/blob/master/op_robot_tests/tests_files/data/users.yaml#L4) в центральну базу.
13   -Для запуску тестів де роль *tender_owner* виконує [*Prom_Owner*](https://github.com/openprocurement/robot_tests/blob/master/op_robot_tests/tests_files/data/users.yaml#L7) запускаємо
14   -```
15   -bin/openprocurement_tests -v tender_owner:Prom_Owner
  7 +This repository contains tests which are aimed to verify performance of the central database and the brokers.
  8 +
  9 +Please visit the [Wiki](https://github.com/openprocurement/robot_tests/wiki) for more information.
... ...
... ... @@ -54,8 +54,10 @@ ${locator.questions[0].answer} xpath=(//div[@tex
54 54
55 55 Login
56 56 Wait Until Page Contains Element id=inputUsername 10
  57 + Sleep 1
57 58 Input text id=inputUsername ${USERS.users['${username}'].login}
58 59 Wait Until Page Contains Element id=inputPassword 10
  60 + Sleep 1
59 61 Input text id=inputPassword ${USERS.users['${username}'].password}
60 62 Click Button id=btn_submit
61 63
... ... @@ -98,8 +100,8 @@ Login
98 100 Wait Until Page Contains Мої закупівлі 10
99 101 Sleep 1
100 102 Click Element xpath=//a[contains(@class, 'ng-binding')][./text()='Мої закупівлі']
  103 + Sleep 5
101 104 Wait Until Page Contains Element xpath=//a[contains(@class, 'btn btn-info')]
102   - Sleep 1
103 105 Click Element xpath=//a[contains(@class, 'btn btn-info')]
104 106 Wait Until Page Contains Element id=title
105 107 Input text id=title ${title}
... ... @@ -190,6 +192,10 @@ Set Multi Ids
190 192
191 193 Клацнути і дочекатися
192 194 [Arguments] ${click_locator} ${wanted_locator} ${timeout}
  195 + [Documentation]
  196 + ... click_locator: Where to click
  197 + ... wanted_locator: What are we waiting for
  198 + ... timeout: Timeout
193 199 Click Link ${click_locator}
194 200 Wait Until Page Contains Element ${wanted_locator} ${timeout}
195 201
... ...
1 1 from datetime import datetime
2 2 from iso8601 import parse_date
  3 +from op_robot_tests.tests_files.service_keywords import get_now
3 4 from calendar import monthrange
4 5
5 6
6 7 def newtend_date_picker_index(isodate):
7   - now = datetime.today()
  8 + now = get_now()
8 9 date_str = '01' + str(now.month) + str(now.year)
9 10 first_day_of_month = datetime.strptime(date_str, "%d%m%Y")
10 11 mod = first_day_of_month.isoweekday() - 2
... ...
1 1 *** Settings ***
2   -Library op_robot_tests.tests_files.brokers.openprocurement_client_helper
3   -Library Selenium2Screenshots
  2 +Library openprocurement_client_helper.py
4 3
5 4 *** Keywords ***
6 5 Отримати internal id по UAid
... ...
1 1 # -*- coding: utf-8 -
2   -from datetime import datetime, timedelta
  2 +from datetime import timedelta
3 3 from faker import Factory
4 4 from munch import munchify
5   -from pytz import timezone
6 5 from tempfile import NamedTemporaryFile
7   -import os
  6 +from .local_time import get_now
8 7
9 8 fake = Factory.create('uk_UA')
10 9 fake_ru = Factory.create('ru')
11 10 fake_en = Factory.create()
12 11
13   -TZ = timezone(os.environ['TZ'] if 'TZ' in os.environ else 'Europe/Kiev')
14   -
15   -
16   -def get_now():
17   - return datetime.now(TZ)
18   -
19 12
20 13 def create_fake_doc():
21 14 content = fake.text()
... ...
... ... @@ -5,12 +5,13 @@ Library String
5 5 Library Collections
6 6 Library Selenium2Library
7 7 Library DateTime
8   -Library Selenium2Screenshots
9 8 Library DebugLibrary
10 9
11 10 *** Keywords ***
12 11 TestSuiteSetup
13   - Завантажуємо дані про користувачів і майданчики
  12 + Set Selenium Implicit Wait 5 s
  13 + Set Selenium Timeout 10 s
  14 + Завантажуємо дані про користувачів і майданчики
14 15
15 16 Set Suite Variable With Default Value
16 17 [Arguments] ${suite_var} ${def_value}
... ... @@ -103,7 +104,7 @@ Get Broker Property By Username
103 104 [Documentation]
104 105 ... Get ${wait_timeout} for specified user and wait
105 106 ... until that timeout runs out.
106   - ${now}= Get Current Date
  107 + ${now}= Get Current TZdate
107 108 ${delta}= Subtract Date From Date ${now} ${TENDER['LAST_MODIFICATION_DATE']}
108 109 ${timeout_on_wait}= Get Broker Property By Username ${username} timeout_on_wait
109 110 ${wait_timeout}= Subtract Time From Time ${timeout_on_wait} ${delta}
... ...
  1 +from datetime import datetime
  2 +from pytz import timezone
  3 +import os
  4 +TZ = timezone(os.environ['TZ'] if 'TZ' in os.environ else 'Europe/Kiev')
  5 +
  6 +
  7 +def get_now():
  8 + return datetime.now(TZ)
... ...
... ... @@ -20,7 +20,7 @@ ${broker} Quinta
20 20 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість оголосити тендер
21 21 ${tender_data}= Підготовка початкових даних
22 22 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data}
23   - ${LAST_MODIFICATION_DATE}= Get Current Date
  23 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
24 24 Set To Dictionary ${USERS.users['${tender_owner}']} initial_data ${tender_data}
25 25 Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID}
26 26 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE}
... ...
1 1 # -*- coding: utf-8 -
2   -from datetime import datetime, timedelta
  2 +from datetime import timedelta
3 3 from dateutil.parser import parse
4 4 from dpath.util import set as xpathset
5 5 from iso8601 import parse_date
6 6 from json import load
7 7 from jsonpath_rw import parse as parse_path
8 8 from munch import fromYAML, Munch, munchify
9   -from pytz import timezone
10 9 from robot.errors import HandlerExecutionFailed
11 10 from robot.libraries.BuiltIn import BuiltIn
12 11 from robot.output import LOGGER
... ... @@ -20,18 +19,12 @@ from .initial_data import (
20 19 test_complaint_reply_data, test_question_answer_data,
21 20 test_question_data, test_tender_data, test_tender_data_multiple_lots
22 21 )
  22 +from .local_time import get_now, TZ
23 23 import os
24 24
25 25
26   -TZ = timezone(os.environ['TZ'] if 'TZ' in os.environ else 'Europe/Kiev')
27   -
28   -
29   -def get_now():
30   - return datetime.now(TZ)
31   -
32   -
33   -def get_date():
34   - return get_now().isoformat()
  26 +def get_current_tzdate():
  27 + return get_now().strftime('%Y-%m-%d %H:%M:%S.%f')
35 28
36 29
37 30 def get_file_contents(path):
... ... @@ -53,15 +46,15 @@ def prepare_prom_test_tender_data(period_intervals, mode):
53 46 return munchify({'data': t_data})
54 47
55 48
56   -def compare_date(data1, data2):
57   - data1 = parse(data1)
58   - data2 = parse(data2)
59   - if data1.tzinfo is None:
60   - data1 = TZ.localize(data1)
61   - if data2.tzinfo is None:
62   - data2 = TZ.localize(data2)
  49 +def compare_date(date1, date2):
  50 + date1 = parse(date1)
  51 + date2 = parse(date2)
  52 + if date1.tzinfo is None:
  53 + date1 = TZ.localize(date1)
  54 + if date2.tzinfo is None:
  55 + date2 = TZ.localize(date2)
63 56
64   - delta = (data1 - data2).total_seconds()
  57 + delta = (date1 - date2).total_seconds()
65 58 if abs(delta) > 60:
66 59 return False
67 60 return True
... ... @@ -189,7 +182,7 @@ def merge_dicts(left, right):
189 182
190 183 # GUI Frontends common
191 184 def add_data_for_gui_frontends(tender_data):
192   - now = datetime.now()
  185 + now = get_now()
193 186 # tender_data.data.enquiryPeriod['startDate'] = (now + timedelta(minutes=2)).isoformat()
194 187 tender_data.data.enquiryPeriod['endDate'] = (now + timedelta(minutes=6)).isoformat()
195 188 tender_data.data.tenderPeriod['startDate'] = (now + timedelta(minutes=7)).isoformat()
... ...
... ... @@ -23,7 +23,7 @@ ${question_id} 0
23 23 [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера),
24 24 ${tender_data}= Підготовка початкових даних
25 25 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data}
26   - ${LAST_MODIFICATION_DATE}= Get Current Date
  26 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
27 27 Set To Dictionary ${USERS.users['${tender_owner}']} initial_data ${tender_data}
28 28 Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID}
29 29 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE}
... ... @@ -63,8 +63,7 @@ ${question_id} 0
63 63
64 64 Відображення tenderID оголошеного тендера
65 65 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
66   - ${field_response}= Викликати для учасника ${viewer} Отримати інформацію із тендера tenderID
67   - Should Be Equal ${TENDER['TENDER_UAID']} ${field_response} Майданчик ${USERS.users['${viewer}'].broker}
  66 + Звірити поле тендера із значенням ${viewer} ${TENDER['TENDER_UAID']} tenderID
68 67
69 68 Відображення procuringEntity.name оголошеного тендера
70 69 [Tags] ${USERS.users['${viewer}'].broker}: Відображення основних даних оголошеного тендера
... ... @@ -176,7 +175,7 @@ ${question_id} 0
176 175 Задати питання
177 176 [Tags] ${USERS.users['${provider}'].broker}: Можливість задати запитання
178 177 Викликати для учасника ${provider} Задати питання ${TENDER['TENDER_UAID']} ${QUESTIONS[${question_id}]}
179   - ${now}= Get Current Date
  178 + ${now}= Get Current TZdate
180 179 Set To Dictionary ${QUESTIONS[${question_id}].data} date ${now}
181 180
182 181 Відображення заголовку анонімного питання без відповіді
... ... @@ -209,7 +208,7 @@ ${question_id} 0
209 208 Відповісти на запитання
210 209 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відповісти на запитання
211 210 Викликати для учасника ${tender_owner} Відповісти на питання ${TENDER['TENDER_UAID']} 0 ${ANSWERS[0]}
212   - ${now}= Get Current Date
  211 + ${now}= Get Current TZdate
213 212 Set To Dictionary ${ANSWERS[${question_id}].data} date ${now}
214 213
215 214 Відображення відповіді на запитання
... ... @@ -307,8 +306,9 @@ ${question_id} 0
307 306
308 307 Неможливість побачити цінові пропозиції учасників під час прийому пропозицій
309 308 [Tags] ${USERS.users['${viewer}'].broker}: Можливість подати цінову пропозицію
310   - ${bids}= Викликати для учасника ${viewer} Отримати інформацію із тендера bids
311   - Should Be Equal ${bids} ${None}
  309 + ${bids}= Викликати для учасника ${viewer} Отримати інформацію із тендера bids
  310 + ${bool}= Convert To Boolean ${bids}
  311 + Should Be Equal ${bool} ${False}
312 312
313 313 Завантажити документ другим учасником
314 314 [Tags] ${USERS.users['${provider1}'].broker}: Можливість прийняти пропозицію переможця
... ...
... ... @@ -21,7 +21,7 @@ ${broker} Quinta
21 21 [Documentation] Створення закупівлі замовником, обовязково має повертати UAID закупівлі (номер тендера),
22 22 ${tender_data}= Підготовка початкових даних
23 23 ${TENDER_UAID}= Викликати для учасника ${tender_owner} Створити тендер ${tender_data}
24   - ${LAST_MODIFICATION_DATE}= Get Current Date
  24 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
25 25 Set To Dictionary ${TENDER} TENDER_UAID ${TENDER_UAID}
26 26 Set To Dictionary ${TENDER} LAST_MODIFICATION_DATE ${LAST_MODIFICATION_DATE}
27 27 log ${TENDER}
... ... @@ -35,7 +35,7 @@ ${broker} Quinta
35 35 [Tags] ${USERS.users['${provider}'].broker}: Можливість подати скаргу на умови
36 36 [Documentation] Користувач ${USERS.users['${provider}'].broker} намагається подати скаргу на умови оголошеної закупівлі
37 37 Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
38   - ${LAST_MODIFICATION_DATE}= Get Current Date
  38 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
39 39 Set Global Variable ${LAST_MODIFICATION_DATE}
40 40
41 41 Можливість побачити скаргу користувачем
... ... @@ -56,24 +56,24 @@ ${broker} Quinta
56 56 Можливість відкинути скаргу на умови
57 57 [Tags] ${USERS.users['${tender_owner}'].broker}: Можливість відкинути скаргу на умови
58 58 Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
59   - ${LAST_MODIFICATION_DATE}= Get Current Date
  59 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
60 60 Set Global Variable ${LAST_MODIFICATION_DATE}
61 61 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}
62 62 Set To Dictionary ${COMPLAINTS[0].data} status invalid
63 63 Викликати для учасника ${tender_owner} Обробити скаргу ${TENDER['TENDER_UAID']} 1 ${COMPLAINTS[0]}
64 64 log many ${COMPLAINTS[0]}
65   - ${LAST_MODIFICATION_DATE}= Get Current Date
  65 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
66 66 Set Global Variable ${LAST_MODIFICATION_DATE}
67 67 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}
68 68
69 69 Можливість задовільнити скаргу на умови
70 70 [Tags] ${USERS.users['${provider}'].broker}: Можливість відповісти на запитання
71 71 Викликати для учасника ${provider} Подати скаргу ${TENDER['TENDER_UAID']} ${COMPLAINTS[0]}
72   - ${LAST_MODIFICATION_DATE}= Get Current Date
  72 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
73 73 Set Global Variable ${LAST_MODIFICATION_DATE}
74 74 Викликати для учасника ${viewer} Оновити сторінку з тендером ${TENDER['TENDER_UAID']}
75 75 Set To Dictionary ${COMPLAINTS[0].data} status resolved
76 76 Викликати для учасника ${tender_owner} Обробити скаргу ${TENDER['TENDER_UAID']} 2 ${COMPLAINTS[0]}
77 77 log many ${COMPLAINTS[0]}
78   - ${LAST_MODIFICATION_DATE}= Get Current Date
  78 + ${LAST_MODIFICATION_DATE}= Get Current TZdate
79 79 Set Global Variable ${LAST_MODIFICATION_DATE}
... ...
Please register or login to post a comment