Это можно сделать, используя pytest . Просто напишите файл test_me.py
с контентом:
import pytest
@pytest.mark.parametrize('name, left, right', [['foo', 'a', 'a'],
['bar', 'a', 'b'],
['baz', 'b', 'b']])
def test_me(name, left, right):
assert left == right, name
И запустите свой тест командой py.test --tb=short test_me.py
. Тогда выход будет выглядеть так:
=========================== test session starts ============================
platform darwin -- Python 2.7.6 -- py-1.4.23 -- pytest-2.6.1
collected 3 items
test_me.py .F.
================================= FAILURES =================================
_____________________________ test_me[bar-a-b] _____________________________
test_me.py:8: in test_me
assert left == right, name
E AssertionError: bar
==================== 1 failed, 2 passed in 0.01 seconds ====================
Это просто !. Кроме того, pytest имеет больше функций, таких как fixtures
, mark
, assert
и т. Д. ...
Пожалуйста, прочитайте документацию $.ajax
, это тема, посвященная теме.
$.ajax({
url: "test.html",
error: function(){
// will fire when timeout is reached
},
success: function(){
//do something
},
timeout: 3000 // sets timeout to 3 seconds
});
Вы можете увидеть, какой тип ошибки был получен путем доступа к параметру textStatus параметра error: function(jqXHR, textStatus, errorThrown)
. Возможные значения: «тайм-аут», «ошибка», «прервать» и «parsererror».
Вот несколько примеров, демонстрирующих установку и обнаружение тайм-аутов в старых и новых парадигмах jQuery.
Обещают с помощью jQuery 1.8 +
Promise.resolve(
$.ajax({
url: '/getData',
timeout:3000 //3 second timeout
})
).then(function(){
//do something
}).catch(function(e) {
if(e.statusText == 'timeout')
{
alert('Native Promise: Failed from timeout');
//do something. Try again perhaps?
}
});
jQuery 1.8 +
$.ajax({
url: '/getData',
timeout:3000 //3 second timeout
}).done(function(){
//do something
}).fail(function(jqXHR, textStatus){
if(textStatus === 'timeout')
{
alert('Failed from timeout');
//do something. Try again perhaps?
}
});
jQuery & lt; = 1.7.2
$.ajax({
url: '/getData',
error: function(jqXHR, textStatus){
if(textStatus === 'timeout')
{
alert('Failed from timeout');
//do something. Try again perhaps?
}
},
success: function(){
//do something
},
timeout:3000 //3 second timeout
});
Обратите внимание, что параметр textStatus (или jqXHR.statusText) позволит вам узнать, что такое ошибка. Это может быть полезно, если вы хотите знать, что отказ был вызван таймаутом.
Ошибка(jqXHR, textStatus, errorThrown)
Функция, которая вызывается, если запрос терпит неудачу. Функция получает три аргумента: объект jqXHR (в jQuery 1.4.x, XMLHttpRequest), строка, описывающая тип возникшей ошибки и необязательный объект исключения, если это произошло. Возможные значения для второго аргумента (кроме нуля) - это «тайм-аут», «ошибка», «прервать» и «parsererror». При возникновении ошибки HTTP errorThrown получает текстовую часть статуса HTTP, например «Not Found» или «Internal Server Error». Начиная с jQuery 1.5, параметр ошибки может принимать массив функций. Каждая функция будет вызываться по очереди. Примечание. Этот обработчик не вызывается для междоменного скрипта и запросов JSONP.
blockquote>
использовать полнофункциональную функцию .ajax
jQuery. сравните с https://stackoverflow.com/a/3543713/1689451 для примера.
без тестирования, просто слияние вашего кода с указанным вопросом SO:
target = $(this).attr('data-target');
$.ajax({
url: $(this).attr('href'),
type: "GET",
timeout: 2000,
success: function(response) { $(target).modal({
show: true
}); },
error: function(x, t, m) {
if(t==="timeout") {
alert("got timeout");
} else {
alert(t);
}
}
});
Вы можете использовать настройку timeout
в параметрах ajax, таких как:
$.ajax({
url: "test.html",
timeout: 3000,
error: function(){
//do something
},
success: function(){
//do something
}
});
. Читайте все о параметрах ajax: http://api.jquery.com/jQuery .ajax /
Помните, что когда происходит тайм-аут, обработчик error
запускается, а не обработчик success
:)