私はPythonが初めてです。私はPythonでtry-exceptステートメントの例外部分を単体テストする必要があります。私はpytestを使用しています。問題は、try部に強制的に例外を発生させる方法がわからないことです。私のコードは次のとおりです。python pytestユニットテストでtry-exceptの例外部分をカバーする方法
try:
if master_bill_to is False:
master.update(
dbsession,
company_id=master.company_id,
)
except Exception as e:
dbsession.rollback()
raise Conflict(e.message)
master.updateメソッドが呼び出され、データベースが更新されます。しかし、どのようにtry部分の例外を発生させるようにこのコードを模擬しますか?
私はこのコードでモンキーパッチを使用しようとしています。マスターオブジェクトはBillToクラスのインスタンスなので、monkeypatch.setattrの最初のパラメータとして考えています。
def test_create_bill_to_fails_when_master_update_fails(dbsession, invoice_group1, company1,
monkeypatch):
def raise_flush_error():
raise FlushError
context = TestContext()
monkeypatch.setattr(BillTo, 'update', raise_flush_error)
with pytest.raises(FlushError):
create_bill_to(
context,
dbsession=dbsession,
invoice_group_id=invoice_group1.id,
company_id=company1.id,
)
しかし、何らかの理由でエラーは発生しません。
Pythonの模擬を検索しようとしましたか? – jonrsharpe