質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

7719閲覧

pythonで強制的に例外処理を起こす方法を知りたい

umino

総合スコア54

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/12/17 04:39

編集2018/12/17 05:17

前提・実現したいこと

単体試験のテストケース書き起こしの際に、
「強制的に例外処理を起こす」処理を具体的なコードで知りたい。

テストフレームワークはpytestを使います。
お詳しい方、ご教示いただければ幸いです。よろしくお願いします。

テスト対象のコード

python

1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3 4 5# テキストファイルを開いて、適当な文字列を書き込むメソッド。 6# ファイルが開けなかった場合は例外処理に入る。 7def set_write_file(file_name, data): 8 try: 9 with open(file_name, 'w') as f: 10 f.write(str(data)) 11 except Exception as e: 12 print("error!{msg}".format(msg=e.message)) 13 14 15file_name = "/home/tmp/test.txt" 16data = "piyopiyo" 17 18set_write_file(file_name,data) 19 20

完成させたいテストコード

python

1 2class Testcase(): 3 def test_open_error(self): 4 with pytest.raises(): 5 6#ここから先がどう書いていいか知りたいです。 7#具体的には、file_nameを開こうとしてエラーになる(例外に入る)という処理を起こしたいです。 8#raiseを使うであろうことは予測していますが、具体的にどう組み込むかがわかりませsん。 9#例外処理を起こせるのであれば、このコードでなくてもかまいません。 10

試したこと

Qiitaなどでpytestの例外処理について調べたのですが、私にとって複雑なものがおおくわかりませんでした。
発展は慣れてから自分で考えるので、いまはできるかぎりシンプルなやり方を知りたいです。

補足情報(FW/ツールのバージョンなど)

python2.7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

8. エラーと例外

下の方に、例外を送出する、という項目がありますね

投稿2018/12/17 05:10

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umino

2018/12/17 05:15

回答ありがとうございます。 raise文の項目はわたしも読んだのですが、上記の投稿文の中に具体的にどう組み込むかがわからず、質問させていただいた次第です。
guest

0

ベストアンサー

もっといい方法があると思いますが、
予め読み込み専用のファイルを作っておいて
set_write_fileで参照してあげればexceptに入ると思います。

また、そのままだと例外をset_write_file内で止めてしまうので

python

1 except Exception as e: 2 print("error!{msg}".format(msg=e.message)) 3 raise e

と再度エラーを吐くか、try-catchを消してあげてください。

テストケースの方は

python

1 with self.assertRaises(Exception): 2 set_write_file(読み込み専用のファイルのパス, 適当なデータ)

で例外処理のテストが出来ると思います。

質問の意図の誤解や嘘をついていたらごめんなさい。

投稿2018/12/19 01:01

yayakona

総合スコア69

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umino

2018/12/21 01:16

返信遅れすみません。 いま教えていただいた方法を試してみたら、無事Exceptに入りました! まさに、この方法を知りたかったです。 丁寧にコードまで教えてくださって、本当にありがとうございます。
yayakona

2018/12/21 03:56

お役に立てたようで何よりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問