Size: a a a

testing_in_python

2020 August 25

IS

Idi Suda in testing_in_python
Oleg Chaplashkin
Коллеги, доброго времени суток! Бросил свой велосипед проверок json схемы и перешёл на человеческую jsomschema.
Всё отлично, однако возникла следующая ситуация:
У меня есть файлы тест-кейсов (содержат названия, описание, входные данные). Раньше  также содержал ожидаемые значения для проверок. Теперь, при переходе на jsonschema содержит схему. Это хорошо.
А что делать если тестов куча? Правильно, я пытаюсь схему в файл, а тест-кейсы отдельно, которые ссылались бы на схему. Это идеально работает при условии, что мы не проверяем точные значения я работаем по типу "ведра": если это "что-то" строка с длиной X и символами Y считаем что всё ок. А что делать, если мы хотим точно указать значение через ключ "const" в схеме?

Повторюсь: два файла - тесты-кейсы и схема. Тест-кейсы пока что ссылаются на файлик и всё. В документации ничего не пишут про подобное, гугл тоже не охотно открывает знания
бля да до жепы всяких валидаторов схемы и жсонсхема не самый лучший из них
источник

DS

Den Skif in testing_in_python
Boris Krutskih
Ну городить джобы в jenkins тоже неособо охота
а куча джоб в проекте - нормальная практика. В них проще ориентироваться чем в километровых строчках флагов пайтеста
источник

NN

Nikolay Nekrasov in testing_in_python
Oleg Chaplashkin
Коллеги, доброго времени суток! Бросил свой велосипед проверок json схемы и перешёл на человеческую jsomschema.
Всё отлично, однако возникла следующая ситуация:
У меня есть файлы тест-кейсов (содержат названия, описание, входные данные). Раньше  также содержал ожидаемые значения для проверок. Теперь, при переходе на jsonschema содержит схему. Это хорошо.
А что делать если тестов куча? Правильно, я пытаюсь схему в файл, а тест-кейсы отдельно, которые ссылались бы на схему. Это идеально работает при условии, что мы не проверяем точные значения я работаем по типу "ведра": если это "что-то" строка с длиной X и символами Y считаем что всё ок. А что делать, если мы хотим точно указать значение через ключ "const" в схеме?

Повторюсь: два файла - тесты-кейсы и схема. Тест-кейсы пока что ссылаются на файлик и всё. В документации ничего не пишут про подобное, гугл тоже не охотно открывает знания
То есть тут вопрос в том как создать болванку схемы и на каждый тест её изменять так, чтобы валидация проходила по уникальной схеме со своим const?
источник

OC

Oleg Chaplashkin in testing_in_python
Nikolay Nekrasov
То есть тут вопрос в том как создать болванку схемы и на каждый тест её изменять так, чтобы валидация проходила по уникальной схеме со своим const?
Да, скорее всего так
У меня есть тестовая логика  и тест-кейсы. Вот в тест-кейсах я храню не просто входные данные, но и название, описание и прочее. То есть полноценная сущность . Теперь по сути да, я хочу что то общее (диапазоны) вынести, а потом ссылаясь на эту схему вставлять точное const
источник

NN

Nikolay Nekrasov in testing_in_python
Oleg Chaplashkin
Да, скорее всего так
У меня есть тестовая логика  и тест-кейсы. Вот в тест-кейсах я храню не просто входные данные, но и название, описание и прочее. То есть полноценная сущность . Теперь по сути да, я хочу что то общее (диапазоны) вынести, а потом ссылаясь на эту схему вставлять точное const
Самое простое что я вижу, это обычный update словаря с болванкой схемы
In [17]: dic_ = {'a': 2}

In [18]: dic_.update({'c': {'const': 3}})

In [19]: dic_
Out[19]: {'a': 2, 'c': {'const': 3}}


Но если хочется поинтересней, можно написать хелпер функцию которая будет в словаре менять значение подходящее под паттерн на определенное значение. Ну скажем value ='%kwarg%', и при вызове функции так передавать transform(schema, kwarg=3)
источник

NN

Nikolay Nekrasov in testing_in_python
а как передавать значения для обновления болванки схемы - это уже на Ваш вкус, параметризация, хардкод - да как угодно в общем
источник

NN

Nikolay Nekrasov in testing_in_python
Ну или ещё идея из разряда "не очень"
{ "const": "United States of America" }

{ "enum": [ "United States of America" ] }


По сути эти записи эквивалентны, но пользуясь тем что словарь содержит ссылки на объекты, можно просто в тесте делать реплейс значения в списке на нужно, по идее должно прокатить
источник

СС

Сказочный Сникерс... in testing_in_python
Boris Krutskih
Поэтому больше нравится вариант с pytest-xdist
у него есть опция как распределять —dist
источник

СС

Сказочный Сникерс... in testing_in_python
если ты хочешь разбить по группам, то проще раскидать по файлам и запускать —dist=loadfile
источник

СС

Сказочный Сникерс... in testing_in_python
с другой стороны я тут запилил кастомный планировщик, который в рантайме выгружает тайминги всех тестов из базы и группирует их по типам, распределяя нужные в нужном порядке и на конкретный поток. пришлось повозиться но это все реально. если че попроще, то можно просто отнаследоваться от LoadScheduling и раскидать как тебе угодно
источник

S

Sergei in testing_in_python
Выкладывай код :)
источник

IS

Idi Suda in testing_in_python
Sergei
Выкладывай код :)
Уже было
источник

IS

Idi Suda in testing_in_python
10 в пине
источник

IS

Idi Suda in testing_in_python
Если это он
источник

ИС

Игорь Середа... in testing_in_python
Не он. Там nda. :)
источник

V

Vova in testing_in_python
а не осталось 10 в пине у кого?чет пусто там
источник

S

Sergei in testing_in_python
Игорь Середа
Не он. Там nda. :)
Что может быть нда в таком плагине? :) Айпи сервера бд или качество кода? :)
источник

ИС

Игорь Середа... in testing_in_python
Sergei
Что может быть нда в таком плагине? :) Айпи сервера бд или качество кода? :)
То что это не плагин, и что там высокая связность с основным кодом, например?
источник

S

Sergei in testing_in_python
эх где дух опенсорса - отделить корпоративный код и сделать другим людям на пользу :(
источник

СС

Сказочный Сникерс... in testing_in_python
Vova
а не осталось 10 в пине у кого?чет пусто там
Завтра залью
источник