Размышления о тестировании ПО

Posted by & filed under python.

Вот такие мысли появились. Сталкнулся с такой проблемой — написание тестов занимает большую часть времени, но не у всех тестов одинаковый приоритет. Есть тесты, которые обрабатываю такие ситуации, вероятность происхождения которых очень низка. Поэтому возникли мысли, а может стоит ввести понятия родов в тестах: тесты 1 рода, проверяют работоспособность системы когда данные введены все правильно,… Read more »

Django-nose

Posted by & filed under django.

Django-nose — приложение упрощающее тестирование в django. Основными фишками является то, что: — позволяет запускать только твои тесты, и пропускать системные тесты в django — позволяет выполнять отдельные тесты в отдельных файлах  и причем файл не обязан называться tests.py — позволяет создать визуальное покрытие тестами кода (создает html файлик, в котором отдельным цветом выделены участки… Read more »

Создание пустого HttpRequest в Django

Posted by & filed under django.

Задача: создать пустой HttpRequest (или не пустой 🙂 ) Решение: Найдено на просторах инета: from django.test import RequestFactory request_factory = RequestFactory() request = request_factory.post(‘/fake-path’, data={‘name’: u’Waldo’}) Оригинал: http://tech.novapost.fr/django-unit-test-your-views-en.html

Compare two dicts in python

Posted by & filed under python.

Божественный и простой способ сравнения словарей: a={‘a’: 1, ‘b’: 2 } b={‘b’: 2, ‘a’: 1 } print(cmp(a,b))

Минифест (манифест разработчиков-минималистов)

Posted by & filed under Мысли.

СУПЕР СТАТЬЯ!!!! ВСЁ МОИ МЫСЛИ, КОТОРЫЕ КРУЖИЛИСЬ ПО ПОВОДУ РАЗРАБОТКИ СОБРАЛИСЬ ЗДЕСЬ! Для себя ещё хотел бы записать следущее правило: Не допускать инверсии: например, вместо константы NOT_CHANGE_MAP=True, делать например так: HOLD_MAP=True

Mysql backup every day (Ежедневный бекап в mysql)

Posted by & filed under python.

Скрипт ежедневного бекапа Mysql (основано на этом) #!/bin/bash # Created by Dmitry # based on solution from http://carrotplant.com/en/blog/how-to-dump-all-mysql-databases-into-separate-files USER=»root» PASSWORD=»root» OUTPUTDIR=»/home/dmitry/Backups/mysql_everyday_backup2/» GZIP_ENABLED=1 MYSQLDUMP=»/usr/bin/mysqldump» MYSQL=»/usr/bin/mysql» if [ ! -d «$OUTPUTDIR» ]; then mkdir -p $OUTPUTDIR fi OUTPUTDIR_CURRENT=$OUTPUTDIR/backup_$(date ‘+%Y-%m-%d_%T’) if [ ! -d «$OUTPUTDIR_CURRENT» ]; then mkdir -p $OUTPUTDIR_CURRENT fi # get a list of databases databases=`$MYSQL… Read more »

RabbitMQ. Heartbeat

Posted by & filed under python.

Суть heartbeat: RabbitMQ-cервер периодически отсылает heartbeat сигналы (frames) клиентам и ждет от них ответа. Если определенное количество сингналов теряется, то соединение закрывается. Hearbeat обычно используется для проверки, что клиент на другой стороне всё ещё живой, и не упал с незакрытым соединением (ИМХО, полезно если клиент выполняет времяемкие операции и может долго не отвечать)

RabbitMQ. Начало

Posted by & filed under python.

Настройка аутентификации на RabbitMQ сервере: Добавление пользователя sudo rabbitmqctl add_user myusername mypassword Добавление виртуального хоста sudo rabbitmqctl add_vhost /myvhost Настройка прав: sudo rabbitmqctl set_permissions -p /myvhost myusername «.*» «.*» «.*» UPD: Назначение админских прав: sudo rabbitmqctl set_user_tags myusername administrator Нужно для полноценного просмотра через web-интерфейс (http://localhost:55672/)

Django. One-to-many relationship

Posted by & filed under django.

Определение: class Aclass(models.Model): #some fields here pass … class Bclass(models.Model): b_field = models.ForeignKey(Aclass) Использование: a=Aclass.objects.get(pk=1) a.aclass_set.objects.all()

Перемещение git репозитория существующего проекта

Posted by & filed under python.

Задача: Переместить git репозиторий существующего проекта в другое место (Практический смысл: перемещение на другой физический носитель, с целью избежать потери данных) Исходное состояние: 1) проект 2) .git директория (расположена рядом) Решение: 1) перемещаем .git директорию в другое место 2) создаем файл .git со следующим содержанием: gitdir: /home/dmitry/another_path/.git Всё. Проверяем: git status Всё корректно работает.