Вы должны использовать следующие библиотеки в своем классе: onBackKeyPressed. canGoBack () проверяет, может ли веб-просмотр ссылаться на предыдущую страницу. Если это возможно, используйте функцию goBack () для ссылки на предыдущую страницу (вернитесь назад).
@Override
public void onBackPressed() {
if( mWebview.canGoBack()){
mWebview.goBack();
}else{
//Do something else. like trigger pop up. Add rate app or see more app
}
}
Вы не можете использовать ExceptionInfo
внутри контекста with pytest.raises
. Запустите код, который ожидается поднять в контексте, работайте с информацией об исключении за пределами:
with pytest.raises(InvAmtValError) as e:
invoices = InvoiceStats()
invoices.addInvoice(-1.2)
assert str(e) == 'The invoice amount(s) -1.2 is invalid since it is < $0.00'
assert e.type == InvAmtValError # etc
Однако, если вы просто хотите утвердить сообщение об исключении, то идиоматический способ будет передавать ожидаемое сообщение прямо к pytest.raises
:
expected = 'The invoice amount(s) -1.2 is invalid since it is < $0.00'
with pytest.raises(InvAmtValError, message=expected):
invoices = InvoiceStats()
invoices.addInvoice(-1.2)
expected = 'The invoice amount(s) 100000000.1 is invalid since it is > $100,000,00.00'
with pytest.raises(InvAmtValError, message=expected):
invoices = InvoiceStats()
invoices.addInvoice(100000000.1)
UPDATE. Пробовал предложенное решение, получил:
blockquote>> invoices.addInvoice(-1.2) E Failed: DID NOT RAISE
Это потому, что исключение действительно не выражено в методе
addInvoice
- оно поднимается внутри блокаtry
и сразу же выставляется после этого. Либо полностью удалите блокtry
, либо выполните ререйз исключения:try: raise InvAmtValError(amount) except InvAmtValError as e: print(str(e)) raise e
> invoices.addInvoice(-1.2) E Failed: DID NOT RAISE
и> invoices.addInvoice(100000000.1) E Failed: DID NOT RAISE
– daiyue 13 July 2018 в 13:27Invoices
, а неInvoiceStats
, но все же получил вышеприведенное сообщение, и он должен поймать ошибку. – daiyue 13 July 2018 в 13:49addInvoice
еще раз - вы поднимаете исключение в блокеtry
, поэтому исключение поднимается и сразу же ловится, и выводится сообщение об ошибке. Если вы хотите, чтобы исключение было поднято в методе, либо полностью удалите блокtry
, либо добавьтеraise e
в исключающий блок для повторного исключения исключения уловов. – hoefling 13 July 2018 в 14:11