Maxim1
11.Декабрь.2017 10:45:26
#1
Товарищи, подскажите, как решается вывод параметров на русском языке? Тут легче показать:
Из кода:
@pytest.mark.parametrize('username, height, weight, pressure_h, pressure_l, glucose, cholesterol, toggle', [
('test_user_1', 170, 55, 120, 80, '5.5', '4.5', 'Да'),
('test_user_2', 180, 75, 130, 80, 5, 5, 'Нет'),
Из консоли:
tests_ui/test_screening_e2e.py::test_e2e[test_user_1-170-55-120-80-5.5-4.5-\u0414\u0430]
tests_ui/test_screening_e2e.py::test_e2e[test_user_2-180-75-130-80-5-5-\u041d\u0435\u0442]
Хотелось бы увидеть нормальное отображение “Да” и “Нет”
Проблема не столько в русском языке, сколько в юникоде вцелом. Насколько понимаю используется python2.7 ? Т.к. у python3 таких проблем не должно быть. Возможно кстати поможет # -*- coding: utf-8 -*-
: Working with UTF-8 encoding in Python source - Stack Overflow , хотя не уверен. А в целом хорошая практика - не использовать русский язык и юникод в репортах
Maxim1
11.Декабрь.2017 10:56:15
#3
Ну нет…тут python 3.6.3.
# -*- coding: utf-8 -*-
Не помог
А они нормально работают в тесте. На странице ищется переключатель Да/Нет к какому-либо вопросу и нажимается в зависимости от кейса вот так:
radio_buttons: //div[contains(text(), '#q_text')]/..//span[contains(text(), '#a_text')]/..
где в методе #q_text и #a_text отлично заменяются на русские слова. А вот PyTest подкачал
Есть вариант завести дикт, в котором мапить значения для различных языков, а из параметров пробрасывать Yes/No
:
langs = {
"yes": {
"ru": u"Да",
},
"no": {
"ru": u"Нет",
},
}
Заодно решает вопрос поддержки многоязычного интерфейса, когда все мультиязычные элементы динамически подхватывают нужные значения по параметру языка.
Maxim1
11.Декабрь.2017 11:31:19
#5
Не, ну это прямо так себе решение, ибо помимо Да и Нет могут быть абсолютно любые слова
checo
13.Декабрь.2017 10:38:31
#6
Там по умолчанию для всех значений вызывается _ascii_escaped(val)
.
Добавьте вот такое в conftest.py :
def pytest_make_parametrize_id(config, val):
return repr(val)
1 лайк
Maxim1
13.Декабрь.2017 10:49:25
#7
Спасибо большое! Но мне похоже не нужен ваш аргумент config , у меня и без него работает.
Semihal
(Сергей Михайлин)
09.Январь.2018 12:46:05
#8
а у меня, к сожалению этот метод не срабатывает. В смысле эта функция (хук) даже не вызывается.
Semihal
(Сергей Михайлин)
09.Январь.2018 14:50:55
#9
Проблема решена таким путем:
@pytest.mark.parametrize(
'array, number_of, expected',
[
pytest.param(*test_args, id=test_id)
for test_args, test_id in zip(TEST_FRAME_CHUNKS, IDS_TEST_FRAME_CHUNKS)
]
)
def test_chunks(array, number_of, expected):
...
ast.andrey9
(Андрей Астраханцев)
04.Июль.2023 14:07:37
#10
У меня перестал работать данный хук. Тесты написаны на pytest_bdd. Есть идеи, что могло пойти не так?