Архив автора: admin

САМАЯ СЛОЖНАЯ РАБОТА — ЭТО РАБОТА НАД СОБОЙ! 15 СОВЕТОВ для тех, кто решил худеть…

САМАЯ СЛОЖНАЯ РАБОТА — ЭТО РАБОТА НАД СОБОЙ! 15 СОВЕТОВ для тех, кто решил худеть… 1. Диета:"Любимая" 2. Гречка — страшный враг жира 3. Как правильно пить воду, чтобы похудеть 4. Картофельный сок — естественный способ похудеть и стать моложе 5. Пьем вечером стакан, а утром худее на 1,5 кг. 6. В борьбе с целлюлитом и отеками — пейте дренажные чаи 7. Ананасовая настойка для похудения 8. Эта чудесная смесь поможет вам скинуть за неделю 4-5 кг. 9. Вода Сасси 10. Уникальный рецепт — очищаем организм и сбрасываем лишний вес 11. Рейтинг круп для похудения 12. Самые «легкие» продукты 13. Кефир со свеклой сжигает 5 кг. жира за 3 дня 14. Жиросжигающий суп. -8 кг за неделю 15. Чем полезна тыква и корица

1. ДИЕТА "ЛЮБИМАЯ". За 7 дней уходит до 10 кг. без возврата + очищается организм. 1 ДЕНЬ: питьевой (пьем все что хотим, в том числе бульоны) 2 ДЕНЬ: овощной (кушаем салаты в любом количестве, желательно с добавлением капусты (она жиросжигатель) 3 ДЕНЬ: питьевой 4 ДЕНЬ: фруктовый (кушаем фрукты, желательно грейпфруты (жиросжигатель) ) 5 ДЕНЬ: белковый (кушаем яйца, филе курицы (вареное), можно йогурты) 6 ДЕНЬ: питьевой 7 ДЕНЬ: выход Завтрак: чай, 2 вареных яйца. Перекус: фрукт Обед: бульон (можно сварить легкий супчик с рисом или гречкой) Перекус: фрукт Ужин: салатик (заправка: растительное масло и соль)

Читать

Не меняется раскладка клавиатуры в RDP-сессии

Настройка терминального сервера и RDP сессиий

Не так давно один из пользователей терминального сервера Windows Server 2008 R2 меня серьезно озадачил. Не меняется (не переключается) раскладка клавиатуры в RDP сессии. При этом значок языка в панели задач меняется, но рядом с ним появляется дополнительный значок клавиатуры, через который надо вручную (мышкой) менять язык ввода. Читать

pytest продолжение

В первой части статей мы немного познакомились с основными базовыми возможностями pytest. Рассмотрели его особенностей и подходы.

В личных беседах и по почте поступил ряд вопросов и предложений, поэтому продолжению быть. В этой и последующих статьях погрузимся глубже в возможности pytest. Новый материал предлагаю выкладывать в виде поваренной книги — проблема, рецептура, ингредиенты, 5 минут готовки, наслаждение.

Последовательно выполнение тестовых сценариев


В тестировании часто бывают случаи, когда необходимо объединить несколько проверок в один большой тест и выполнить их последовательно. Причем бывает и так, что один сценарий зависит от результатов работы предыдущего (но такое лучше стараться избегать в автотестировании). 

В следующих статьях мы посмотрим как можно избежать этой ситуации пользуясь стандартными средствами пайтеста.

Например, тестируемая программа при первом запуске накатывает схему базы (sqlite чтобы не морочиться) и заполняет её некоторой служебной информацией. Допустим перед нами стоит задача «дешево» протестировать этот модуль. Сходу задачу модно разбить на 2 подзадачи — проверка создания файла базы, затем проверка схемы и в конце проверка данных.

Самый простой вариант — нумерация в названии тестов

# conftest.py
import os
import pytest
import sqlite3


def pytest_configure(config):

    config.DB_PATH = «db.sqlite»


@pytest.fixture(scope=»module»)
def creator(request):
    DB_PATH = request.config.DB_PATH
    con = sqlite3.connect(DB_PATH)
    cur = con.cursor()
    cur.executescript(«»»
        create table person(
            firstname,
            lastname,
            age
        );

        create table book(
            title,
            author,
            published
        );

        insert into book(title, author, published)
        values (
            'Dirk Gently''s Holistic Detective Agency',
            'Douglas Adams',
            1987
        );
        «»»)
    con.commit()
    con.close()
    return DB_PATH


@pytest.fixture
def cursor(request):
    class cursor:

        def __init__(self, dbpath):
            self.dbpath = dbpath
            self.conn = sqlite3.connect(self.dbpath)

        def table_exists(self, table):
            cursor = self.conn.cursor()
            cursor.execute(
                «SELECT name FROM sqlite_master WHERE type = «table»»)
            tables = cursor.fetchall()
            for each in tables:
                if table in each:
                    return True
            return False

        def getrows(self, table):
            cursor = self.conn.cursor()
            cursor.execute(«SELECT * FROM %s;» % (table))
            return cursor.fetchall()

    return cursor(request.config.DB_PATH)

# test.py
def test_1_db_exists(creator):
    assert os.path.exists(creator)


@pytest.mark.parametrize(«table», [«person», «book»])
def test_2_check_scheme(table, creator, cursor):
    result = cursor.table_exists(table)
    assert result


@pytest.mark.parametrize(«table», [«book»])
def test_3_check_rows(table, creator, cursor):
    assert cursor.getrows(table)


Спасибо документации питона за готовые примеры.

У такого подхода есть ряд недостатков.
1. В названии теста появляется нумерация — это лишняя мета информация. (Это может сказаться на тестовом отчете или билд логе CI сервера)
2. Название теста усложняется
3. Вставка нового элемента в середину приведет к смене нумерации всех последующих тестов

Вариант посложнее — маркеры


Свои маркеры мы реализовывать не будем, а используем готовый плагин pytest-ordering. В принципе вся реализация такого плагина составит не больше 100 строчек кода.

# test.py
@pytest.mark.order1
def test_db_exists(creator):
    assert os.path.exists(creator)


@pytest.mark.order2
@pytest.mark.parametrize(«table», [«person», «book»])
def test_check_scheme(table, creator, cursor):
    result = cursor.table_exists(table)
    assert result


@pytest.mark.order3
@pytest.mark.parametrize(«table», [«book»])
def test_check_rows(table, creator, cursor):
    assert cursor.getrows(table)


Наши тестовые функции преобразились, стали более понимаемы для чтения.
Из коробки плагин содержит создание цепочек выполнения, более понятные маркеры (pytest.mark.run('first'), pytest.mark.run('second')) и прочее. Более подробно в микро доку плагина.

Ссылки
[1] https://docs.python.org/2/library/sqlite3.html
[2] http://pytest-ordering.readthedocs.org/en/develop/

Автор: Евгений Курочкин

Креветка амано

Креветка амано

Пресноводная креветка Амано — одна из самых популярных видов аквариумных креветок. Известна под различными названиями — Caridina japonica, Amano Shrimp, AES (Algae Eating Shrimp), Caridina multidentata. Популярность данный вид креветок завоевал благодаря способности поедать нитчатые водоросли, изрядно облегчая работу аквариумиста по очистке аквариума.

Амано – достаточно крупные креветки, размеры взрослой самки достигают 5-6 см, а изредка и 7 см. Самцы несколько мельче – их максимальный размер – 4 см. Отличить самку от самца креветки Амано довольно легко, этому способствует не только размер, но и рисунок на теле. У самцов вдоль туловища наблюдаются черные точки, в то время как у самки точки перемежаются пунктирными линиями.

Как скрыть свой IP адрес в Интернете

Необходимость скрыть свой IP адрес в Интернете может возникать в различных ситуациях. Например, если вас заблокировали на каком-то сайте по IP адресу или вы хотите обеспечить себе большую анонимность. В этом материале мы рассмотрим несколько простых способов, как бесплатно скрыть свой реальный IP адрес в Интернете при посещении веб-сайтов. Читать

Детское меню: Овсянка с яблоками Термомикс от @Караповой Ольги

Ингредиенты:
  • 30 г овсянки «Геркулес»
  • 200 г молока
  • ½ яблока
  • масло (по желанию)
  • фруктоза (по желанию)

Cпособ приготовления:

1.Яблоко вымыть и почистить, порезать мелко или измельчить в чаше до пюре на ск.5;

2.Добавить в чашу овсянку, молоко и яблоко, готовить: 10 мин/90°/ск.2;

3.Добавить по желанию фруктозу и масло;

4.Взбить кашу: 3 сек/ск.7;

5.Проверить температуру и подавать;

6.Приятного аппетита!

PS Если Вы уже попробовали это блюдо или сначала хотите спросить совета — пишите в комментариях, мы будем очень рады! Нажмите на кнопочки социальных сетей — поделитесь с друзьями!​​


THERMOMIXMANIA.RU