2019年7月29日月曜日

開発環境

Head First はじめてのプログラミング ―頭とからだで覚えるPythonプログラミング入門 (Eric Freeman(著)、嶋田 健志(監修)、木下 哲也(翻訳)、株式会社オライリー・ジャパン)を9章(ファイルの保存と取得 - 永続性)の自分で考えてみよう(419ページ)の解答を求めてみる。

コード

Python 3

#!/usr/bin/env python3
from unittest import TestCase, main


class ExceptionTests(TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_nonzero(self):
        nums = ['1', '2', '42']
        expecteds = [42, 21, 1]
        for num, expected in zip(nums, expecteds):
            self.assertEqual(f(num), expected)

    def test_zero(self):
        self.assertRaises(ZeroDivisionError, f, '0')

    def test_str(self):
        self.assertRaises(ValueError, f, 'zero')


def f(num: str) -> float:
    try:
        result: float = 42 / int(num)
    except ZeroDivisionError:
        raise ZeroDivisionError()
    except ValueError:
        raise ValueError()
    else:
        return result


if __name__ == '__main__':
    main()

入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

$ ./sample3.py -v
test_nonzero (__main__.ExceptionTests) ... ok
test_str (__main__.ExceptionTests) ... ok
test_zero (__main__.ExceptionTests) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK
$ 

0 コメント:

コメントを投稿