Логи CLSLogv не приходят в Crashlytics

Вы не можете использовать 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. Пробовал предложенное решение, получил:

>           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
1
задан rmaddy 19 January 2019 в 16:40
поделиться

1 ответ

Надеясь, это может кому-то помочь. Каким-то образом я не смог заставить CLSLogv работать. В итоге я создал объект NSError и записал его в Crashlytics в блоке catch.

catch Exceptions.SQLiteError(let error) {
   let userInfo = [NSLocalizedDescriptionKey: error.message, "query": error.query]
   let errorObj = NSError(domain: "sqlite", code: 400, userInfo: userInfo)
   Crashlytics.sharedInstance().recordError(errorObj)
}
0
ответ дан Richeek 19 January 2019 в 16:40
поделиться
Другие вопросы по тегам:

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