2019年9月6日金曜日

開発環境

Practical Programming: An Introduction to Computer Science Using Python 3.6 (Paul Gries(著)、Jennifer Campbell(著)、Jason Montojo(著)、Pragmatic Bookshelf)のChapter 5(Making Choices)、Exercises 7の解答を求めてみる。

コード

Python 3

#!/usr/bin/env python3
from unittest import TestCase, main
from test.support import captured_stdout


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

    def tearDown(self):
        pass

    def test_a(self):
        populations = [9999999, 10000000]
        with captured_stdout() as stdout:
            for population in populations:
                if population < 10000000:
                    print(population)
        self.assertEqual(stdout.getvalue(), '9999999\n')

    def test_b(self):
        populations = [9999999, 10000000, 35000000, 35000001]
        with captured_stdout() as stdout:
            for population in populations:
                if 10000000 <= population <= 35000000:
                    print(population)
        s = '''10000000
35000000
'''
        self.assertEqual(stdout.getvalue(), s)

    def test_c(self):
        population = 10000
        areas = [1, 10, 100, 1000]
        with captured_stdout() as stdout:
            for area in areas:
                if population / area > 100:
                    # print('Densely populated')
                    print(area)
        s = '''1
10
'''
        self.assertEqual(stdout.getvalue(), s)

    def test_d(self):
        population = 10000
        areas = [1, 10, 100, 1000]
        with captured_stdout() as stdout:
            for area in areas:
                if population / area > 100:
                    print('Densely populated')
                else:
                    print('Sparsely populated')
        s = '''Densely populated
Densely populated
Sparsely populated
Sparsely populated
'''
        self.assertEqual(stdout.getvalue(), s)


if __name__ == '__main__':
    main()

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

$ ./sample7.py -v
test_a (__main__.MyTestCase) ... ok
test_b (__main__.MyTestCase) ... ok
test_c (__main__.MyTestCase) ... ok
test_d (__main__.MyTestCase) ... ok

----------------------------------------------------------------------
Ran 4 tests in 0.000s

OK
$ 

0 コメント:

コメントを投稿