@spbpython

Страница 18 из 785
Aleksandr
25.03.2016
17:36:20
Нет тестов на ваши функуторы )

Andrey
25.03.2016
17:36:43
на функцию, которая объявлена внутри другой функции я тоже тестов особе не напишу

Aleksandr
25.03.2016
17:36:58
Особо?! А может? )

А можно? * )

Google
Andrey
25.03.2016
17:37:06
а вот все вместе покрыть можно запросто

Aleksandr
25.03.2016
17:37:21
Это уже интеграционный тест. Не пойдет (

Интегрировал в компрехеншн функтор )

Andrey
25.03.2016
17:37:37
а зачем отдельный тест на функцию в одну строчку?

Aleksandr
25.03.2016
17:37:50
Кааак

TDD )

Dmitry
25.03.2016
17:38:00
Да :)

Andrey
25.03.2016
17:38:16
ну давай вообще на каждую строчку кода по отдельному тесту писать

Serge
25.03.2016
17:38:31
так и надо вообще то

GNU/Docker
25.03.2016
17:38:33
разделять на чистые функции и функции с сайд эффектами.

Aleksandr
25.03.2016
17:38:37
Вообще так и надо

Serge
25.03.2016
17:38:49
то что некоторые тесты покрывают сразу несколько строк - это оптимизация трудозатрат и только

Aleksandr
25.03.2016
17:38:52
Сайд эффектов быть не должно?

Google
GNU/Docker
25.03.2016
17:39:29
чистые функции тестируются влёгкую

Andrey
25.03.2016
17:39:33
надо ли покрывать отдельным тестом строку foo.append(bar)?

GNU/Docker
25.03.2016
17:39:53
от одних и тех же аргументов один и тот же результат.

Serge
25.03.2016
17:39:56
я вот тут напугал чуваков... запустил тесты от юзера, которому никуда нельзя писать, даже в tmp, поржал:)

GNU/Docker
25.03.2016
17:40:00
очень удобно

лол

Aleksandr
25.03.2016
17:40:33
Serge
25.03.2016
17:40:45
надо ли покрывать отдельным тестом строку foo.append(bar)?
конечно! а если foo не список? а если bar неопределено?

Aleksandr
25.03.2016
17:41:06
Defensive programming to the masses!

В задницу ваш let it fail )

Serge
25.03.2016
17:41:40
На билд сервере. Чтобы человек кирпичей наложил от своего push-а
нет, а что? тесты должны быть изолированы от окружения. не волнует.

Aleksandr
25.03.2016
17:41:43
Erlang-исты какие-то придумали )

Andrey
25.03.2016
17:42:03
то есть вы мне предлагаете писать тесты на базовые конструкции языка?

Aleksandr
25.03.2016
17:42:07
Andrey
25.03.2016
17:42:26
а если мы подключаем контекст, то это уже не одна строчка кода тестируется нифига

Aleksandr
25.03.2016
17:42:35
@andreyzakharevich мы веселимся )

Можем сказать, что нужно тестировать тест.

Serge
25.03.2016
17:43:15
Можем сказать, что нужно тестировать тест.
этого вообще никто не делает! все ленивые!

Aleksandr
25.03.2016
17:43:18
И в итоге тестами нельзя покрыть все. Так как каждый новый тест - это новая единица для тестирования.

GNU/Docker
25.03.2016
17:43:20
Вот и проблема мутабельности

Google
GNU/Docker
25.03.2016
17:43:28
может произойти что угодно

Andrey
25.03.2016
17:43:38
достаточно написать тест, который тестирует сакм себя

GNU/Docker
25.03.2016
17:43:44
и это надо всё предугадать

Aleksandr
25.03.2016
17:43:54
Где какая мутабельность? Пиши на туплах, интах всяких. Не будет мутабельности )

Serge
25.03.2016
17:44:01
Aleksandr
25.03.2016
17:44:15
def test(): assert test() ?

Serge
25.03.2016
17:44:32
Aleksandr
25.03.2016
17:44:36
?

Добавить return True

assert test() is None

GNU/Docker
25.03.2016
17:45:34
Ну, любимая ошибка же

Serge
25.03.2016
17:45:35
def test(): with pytest.raises(TestErrorDontRemember): test()

GNU/Docker
25.03.2016
17:45:45
про исчерпание стека вызовов.

Aleksandr
25.03.2016
17:45:47
По-моему это какая-то дичь.

Плохой тест.

pytest.raises может обладать сайд эфектами

Serge
25.03.2016
17:46:44
pytest.raises может обладать сайд эфектами
там весь pytest один большой сайдэффект :)

Aleksandr
25.03.2016
17:47:18
py.test —nomagic просто использовать ндао

Serge
25.03.2016
17:47:48
Google
Serge
25.03.2016
17:48:35
а как же assert 'foo' in open(fixture_filename) ?

Aleksandr
25.03.2016
17:50:27
Не знаю. Жутковато как-то.

Michael
25.03.2016
18:04:57
https://github.com/lihaoyi/macropy#tail-call-optimization

GNU/Docker
25.03.2016
18:09:02
вот то что сделано в питоне на подыгрывании с аст, кое-где является основой языка)

Но хоть так можно, хотя выглядит ультрамагически. Естественно такое в проде не использую.

Roman
25.03.2016
18:28:06
кстати

def tmap(fname): s = set() csize = 1024*32768 with open(fname, "rb") as f: while 1: chunk = f.readlines(csize) if not chunk: break s.update(chunk) return s

вот это самый быстрый способ получается :)

чтобы ещё и память не сожрать всю.

Aleksandr
25.03.2016
18:33:07
Почему update?

Ты точно сделал что хотел? )

Serge
25.03.2016
18:34:30
самый быстрый способ тот, который ничего не делает;)

Aleksandr
25.03.2016
18:35:42
И даже если делать add в нем будет уникальный набор байт файла? )

Это что за задача

Dmitry
25.03.2016
18:37:00
Там наверное должно быть update(set(chunk))

Aleksandr
25.03.2016
18:37:26
И это то же самое

Уникальные байты из чанка объединяются с сетом исходным ...

Dmitry
25.03.2016
18:38:22
Он же линии читает

Aleksandr
25.03.2016
18:38:54
Ну там нужны уникальные линии а не уникальные буквы

Или я туплю ...

Google
Aleksandr
25.03.2016
18:40:09
Почему я подумал про counter('abcddddde')

Dmitry
25.03.2016
18:40:19
:)

Я тут недавно узнал почему некоторые типы в python названы маленькими буквами а некоторые как OrderedDict и Counter нет. Никогда не задумывался. Оказывается они написаны на Python, а те на C.

В тройке возможно уже тоже переписаны на С.

Aleksandr
25.03.2016
18:43:42
OrderedDict не всегда был на С вроде?

А, наоборот

Roman
25.03.2016
18:44:43
Aleksandr
25.03.2016
18:45:07
Ок, зачет

Roman
25.03.2016
18:45:52
Он же линии читает
нет, там веселее. f.readlines(size) читает до size линий за раз и возвращает тебе список, которым я разом апдейчу сет.

Dmitry
25.03.2016
18:46:40
Ух-ты я думал сет можно апдейтить только сетом.

Aleksandr
25.03.2016
18:49:28
Хм, я думал update === =| а на это питон скажет айайай разные типы

Dmitry
25.03.2016
18:50:23
ага судя по всему

Aleksandr
25.03.2016
18:50:36
По доке да. Угу.

Serge
25.03.2016
18:50:41
ну так же, как конструктору

Aleksandr
25.03.2016
18:50:57
set |= other | ... Update the set, adding elements from all others. Changed in version 2.6: Accepts multiple input iterables.

Dmitry
25.03.2016
18:51:19
?

Roman
25.03.2016
19:04:54
Недавно наткнулся, как похапэшник для того, чтобы дописать чего-то в лог читал целиком лог-файл в оперативку, туда конкатенировал строку и записывал обратно.

Vitali K.
25.03.2016
20:24:23
У меня есть улучшение этого решения

Нужно замерять время загрузки лога в память. Если грузится долго то делать log rotate

Страница 18 из 785