Поблочное тестирование и почтовый отправитель насмешки в Python с Google AppEngine

Вот как вы можете начать ... вы можете использовать несколько способов получить год из текста td, но, хотя год является единственным, он имеет длину 4 символа, вы можете напрямую использовать селектор :contains

]

$('#year').on('change' , function(){
   var SelectedYear = $(this).val();
   $('tr').removeClass('inYear');
   $('td:contains("'+ SelectedYear +'")').closest('tr').addClass('inYear');
}).change();  // add .change here will run the change event on load
.inYear{
  background : red;
}








06/05/2018 16:00h Chris
24/10/2019 20:00h Alex
11/03/2018 15:00h Dani
08/04/2019 12:30h Joe
22/04/2018 10:30h Mike

Примечание: Если выбор генерируется динамически, вам необходимо Привязка события к динамически создаваемым элементам? $(document).on('change' , '#year' , function(){ //code here })

blockquote>

5
задан CVertex 30 January 2009 в 03:19
поделиться

3 ответа

Очень краткое введение обеспечивает PyPI: MiniMock 1.0. Это - очень небольшая библиотека для установления насмешек.

  1. Введите свою насмешку в модуль, который нужно дразнить
  2. Определите, что возвратит Ваша насмешка
  3. Назовите метод
  4. Ваша насмешка скажет, каким методом были названы.

Удачи!

2
ответ дан 13 December 2019 в 22:18
поделиться

Я использовал тестовый стенд GAE jgeewax с GAEUnit. Мне было проще использовать GAEUnit вместо NoseGAE, поскольку у меня уже был GAEUnit. Вот шаги:

Добавьте GAEUnit в свое приложение

  1. Загрузите заархивированный архив GAEUnit с его страницы размещения проекта Google Code .
  2. Распаковать архив.
  3. Из папки, извлеченной из архива, скопируйте gaeunit.py в корневую папку своего приложения.
  4. Добавьте следующие 2 строки в свой app.yaml непосредственно под строкой, в которой указаны обработчики : :

Код:

- url: /test.*
  script: gaeunit.py

(Необязательно) Из извлеченной папки в архиве есть папка с именем sample_app , в которой находится модифицированная версия модуля webtest . Скопируйте модуль webtest (вся папка, содержащая debugapp.py и __ init __. Py ) в корень вашего приложения.

Добавьте тестовую площадку GAE в GAEUnit:

  1. Загрузите tar gzip-архив тестовой площадки GAE со страницы , на которой размещен проект Google Code .
  2. Распаковать архив.
  3. Внутри извлеченного архива находится модуль gaetestbed (это папка с именем «gaetestbed»). Скопируйте модуль в корень вашего приложения.
  4. Создайте файл в тестовой папке корня вашего приложения. Для этого примера назовем его test_mailer.py .
  5. Используя пример со страницы хостинга проекта Google Code Testbed GAE, добавьте следующие строки в test_mailer.py :

Код:

import unittest
from gaetestbed import MailTestCase

class MyTestCase(MailTestCase, unittest.TestCase):
    def test_email_sent(self):
        send_email_to('test@example.org') # Some method that sends e-mail...
        self.assertEmailSent(to='test@example.org')
        self.assertEqual(len(self.get_sent_messages()), 1)

Запустите сервер и перейдите по адресу http: // локальный: 8080 / тест . Вы должны заметить, что (дополнительный) тест 1/1 был запущен с http: // localhost: 8080 / test .

Источник: Использование тестовой системы GAE с GAEUnit: проверка того, что электронное письмо было отправлено

1
ответ дан 13 December 2019 в 22:18
поделиться

Вы также можете переопределить метод _GenerateLog в mail_stub внутри AppEngine.

Вот родительский класс TestCase, который я использую в качестве миксина при проверке отправки электронных писем:

from google.appengine.api import apiproxy_stub_map, mail_stub

__all__ = ['MailTestCase']

class MailTestCase(object):
    def setUp(self):
        super(MailTestCase, self).setUp()
        self.set_mail_stub()
        self.clear_sent_messages()

    def set_mail_stub(self):
        test_case = self
        class MailStub(mail_stub.MailServiceStub):
            def _GenerateLog(self, method, message, log, *args, **kwargs):
                test_case._sent_messages.append(message)
                return super(MailStub, self)._GenerateLog(method, message, log, *args, **kwargs)

        if 'mail' in apiproxy_stub_map.apiproxy._APIProxyStubMap__stub_map:
            del apiproxy_stub_map.apiproxy._APIProxyStubMap__stub_map['mail']

        apiproxy_stub_map.apiproxy.RegisterStub('mail', MailStub())

    def clear_sent_messages(self):
        self._sent_messages = []

    def get_sent_messages(self):
        return self._sent_messages

    def assertEmailSent(self, to=None, sender=None, subject=None, body=None):
        for message in self.get_sent_messages():
            if to and to not in message.to_list(): continue
            if sender and sender != message.sender(): continue
            if subject and subject != message.subject(): continue
            if body and body not in message.textbody(): continue
            return

        failure_message = "Expected e-mail message sent."

        args = []
        if to: args.append('To: %s' % to)
        if sender: args.append('From: %s' % sender)
        if subject: args.append('Subject: %s' % subject)
        if body: args.append('Body (contains): %s' % body)

        if args:
            failure_message += ' Arguments expected: ' + ', '.join(args)

        self.fail(failure_message)

После этого пример тестового случая может выглядеть так:

import unittest, MailTestCase

class MyTestCase(unittest.TestCase, MailTestCase):
    def test_email_sent(self):
        send_email_to('test@example.org') # Some method that would send an e-mail.
        self.assertEmailSent(to='test@example.org')
        self.assertEqual(len(self.get_sent_messages()), 1)
3
ответ дан 13 December 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: