
Solyar
19.12.2016
20:35:54
Хотя можно было бы и красивее но я пока осваиваюсь

Denis
19.12.2016
20:36:47
Ну вроде должно

Solyar
19.12.2016
20:37:06

Google

Solyar
19.12.2016
20:37:09
я глупец

Petro
19.12.2016
21:06:15
Mathematics, bitch!
Зато видишь, не зря выложил своё решение. Узнал что-то новое.

Janek
19.12.2016
21:24:45
Поясните за елду

Denis
19.12.2016
21:25:23
Ну в штанах такая штука есть
А почему вы спрашиваете?

Janek
19.12.2016
21:26:09
У вас yield видно, в курсе?

Denis
19.12.2016
21:26:38
Ну yield прерывает выполнение генератора и возвращает из него некоторое значение

Janek
19.12.2016
21:27:08
Я понял

Pavel
19.12.2016
21:31:27
есть один забавный момент, про который по-первости все забывают.
>>> def foo():
... print('before')
... i = 0
... while i<10:
... print('inside')
... yield i
... i+=1
...
>>>
>>>
>>> x = foo()
>>> next(x)
before
inside
0
>>> next(x)
inside
1
>>>

b0g3r
19.12.2016
21:32:03
а какой

Pavel
19.12.2016
21:32:06
Если питон решает, что функция - генератор, то он её не выполняет, пока не начнёшь её итерировать.

b0g3r
19.12.2016
21:32:11
а, я уже подумал что я что-то не углядел)

Google

Janek
19.12.2016
21:32:57
Я вот вчера не смог вызвать просто подобную функцию
Вообще ничего не возвращало

Pavel
19.12.2016
21:33:13
Ну это ньюанс, который может потратить маленько времени при дебаге "какого хрена оно не выполняется?"

Janek
19.12.2016
21:33:27
Пока не начал итерировать

b0g3r
19.12.2016
21:34:10

Janek
19.12.2016
21:34:38
Да. Но я просто игрался. Пока практического применения елду не нашел

Denis
19.12.2016
21:34:49
Почему они не могли сделать объявление генератора, например, через yield def?

b0g3r
19.12.2016
21:34:57
да(

Janek
19.12.2016
21:36:01
Для меня магия какая-то, что объявляя елд в любом месте функции, ты из нее делаешь генератор
Как-то очень неявно, что ли

Solyar
19.12.2016
21:51:58
That's the right answer! You are one gold star closer to fixing the sleigh. [Return to Day 1]
Уделал первую задачку)

Pavel
19.12.2016
21:53:05
в C# такая же петрушка c елдом.

Solyar
19.12.2016
21:54:11

Pavel
19.12.2016
21:54:43
Она самая
отлично, но там есть вторая часть, и ещё куча задач навалена уже.

Solyar
19.12.2016
21:54:58

Alexander
19.12.2016
22:02:15
Всем привет. Подскажите, пожалуйста, как должна выглядеть структура директорий для проекта на питоне (набор скриптов), какой фремворк для юнит тестов лучше использовать (нагуглил несколько штук, что из этого в почете, а что не нет не понял), и есть что-нибудь для интеграционного тестирования?

Denis
19.12.2016
22:03:40

Alexander
19.12.2016
22:04:36
Есть еще nose, pytest

Google

Alexander
19.12.2016
22:05:01
И выглядят они как-то одинаково
Есть среди них что-то вроде JUnit в джава?

b0g3r
19.12.2016
22:05:58

Pavel
19.12.2016
22:06:09
про nose одно могу сказать: Warning nose itself supports python 3, but many 3rd-party plugins do not!.

Alexander
19.12.2016
22:06:33
Спасибо

Pavel
19.12.2016
22:07:06
py.test знатно расширяет возможности юнит-тестирования, но для начала unittest хватит за глаза.

Alexander
19.12.2016
22:08:32
А есть какие-нибудь тулзы/фреймворки для интеграционного тестирования?

Solyar
19.12.2016
23:37:45
Ребят не подскажите как поступить? Есть три переменные n1,n2,n3 как-нибудь можно вызвать их используя вместо цифры значение другой переменной скажем y
Решил вопрос

Сергей
19.12.2016
23:44:22
Как
?
В y запихнул эти переменные? Массив?

Solyar
19.12.2016
23:58:32
Сделал массив и запихнул туда переменные!
Но пожалуй на сегодня хватит, пойду посплю, а завтра со свежей головой приложусь

Pavel
20.12.2016
00:11:39
Хотел бы я знать, где там три переменных. Или четыре, или две, но три...

53r63rn4r
20.12.2016
00:58:51
Вот кстати хз как полностью покрывать код тестами, юзал только ассертЕквал, все

Артем
20.12.2016
06:04:47
Ну я еще юзал ассертКонтенс(), это когда ты проверяешь что например в респонсе есть что, что ты тестишь

53r63rn4r
20.12.2016
06:06:41
А хз как нужно писать правильно тесты и юзать еще больше..
Но хотелось бы

Google

Артем
20.12.2016
06:08:59
Да я в общем ассертЕквал и ассертКонтенс знаю а дальше хз

Dmitriy
20.12.2016
06:11:12
Если метод возвращает разные типы данных, то еще assertIs или assertIsInstance юзать желательно
В самих тестах приводить результат к другим различным типам не желательно

Артем
20.12.2016
06:14:03
Ну вот есть же подход программирования сначала тесты потом уже код, ну это скорее не для бегинеров подход разработки

Dmitriy
20.12.2016
06:14:58
TDD, BDD

Артем
20.12.2016
06:16:20
Это когда ты ебешься над тестами а тебе надо писать код, я так понимаю этот подход

Admin
ERROR: S client not available

Cykooz
20.12.2016
06:18:23
А порядок написания теста и кода - это по большей части индивидуальные особености
Мне вот проще проектировать систему сразу реализуя это в коде, поэтому у меня тесты обычно пишутся после того как будет хоть какой то работающий кусок кода. Иначе я просто не знаю что тестировать поскольку ещё не придумал архитектуру, API и д.р.
Кому то может удобнее сначала "на бумажке" придумать всё, и уже дальше следовать "плану" при написании кода. Вот тогда можно сразу нафигачить тестов.


Dmitriy
20.12.2016
06:25:07
На своих небольших домашних проектах тесты может и пишутся в самый последний момент
На больших же проектах их нужно как можно быстрее реализовать, потому как чем раньше тестирование началось тем оно дешевле в будущем
Как в прочем и дешевле обновление самого проекта в целом

Артем
20.12.2016
06:26:22
Просто еще вопрос а что именно тестить в коде...

Cykooz
20.12.2016
06:26:29
Ну не обязательно в последний момент писать тесты - обычно это как то перемешано. Написал одну функцию - запилил для неё тесты, написал следующую - потом для неё тесты.

Dmitriy
20.12.2016
06:26:50
Различные юзкейсы
Чтобы данный функиционал отрабатывал нормально в обычных ситуациях и экстремальных

Cykooz
20.12.2016
06:28:23
Ага, самое простое - это имитировать бурную деятельность пользователя, такие кейсы как правило лежат на поверхности.

Google

53r63rn4r
20.12.2016
06:34:49
Вот вот
Хотелось бы узнать бест практик от кьюа
Жаль что тут нет питон кьюа в чате

Dmitriy
20.12.2016
06:35:52
Ага, жаль

Cykooz
20.12.2016
06:40:38
Жаль что тут нет питон кьюа в чате
Обычно тесты пишет сам программист а не отдельный QA. Отдельные QA чаще всего тестируют уже готовый продукт с точки зрения пользователя.

Dmitriy
20.12.2016
06:41:16
Есть такой подвид - инжинер по автоматизации тестирования
По сути это тот же разработчик, только тестов
На практике встречаются различные гибриды, с различным списком обязанностей, все зависит от проекта

Cykooz
20.12.2016
06:46:56
Мне кажется полное разделение на кодера и тестера - это какой то неудачный перенос практик из других отраслей. Если кодер будет без проверки херачить код и отдавать его тестеру - то это будут большие накладные задержки. Пока тестер разберётся, что там кодер понаписал, потом он тесты напишет, они поломаются и он запилит тикет на кодера, который уже херачит другую фичу...

Pavel
20.12.2016
06:47:52

Cykooz
20.12.2016
06:48:29
Я вот например пишу бекенд с REST-API, и я без тестов даже не смогу узнать работает оно или нет. А потому тесты пишу все сам. QA у нас выступают последней линией обороны - тестируют уже развёрнутый на стенде бекенд.

Dmitriy
20.12.2016
06:48:45
Зависит еще от цвета ящика

Cykooz
20.12.2016
06:50:32
В плане разделения типов тестов у нас получается наверное только чётко выделеные интеграционые тесты, которые посути делают QA. А то что я пишу, там вообще дикая смесь, и сложно определить какой тест: юнит, функциональный или ещё чего.

Yan?
20.12.2016
07:00:52
я как-то не в тыкаюсь тему properties. Как я понял, @property работает как патернн декоратор, кустомизирую доступ к атрибутам инстанса. Но как ими заменить геттеры и сеттеры?

Cykooz
20.12.2016
07:04:07
Ну и почитай про дексрипторы в питоне (на них и основаны property)
https://habrahabr.ru/post/122082/
Эта группа больше не существует