[41]:
import sys
!{sys.executable} -m pip install iplantuml
import iplantuml
Requirement already satisfied: iplantuml in /usr/local/lib/python3.7/site-packages (0.1.1)
Requirement already satisfied: plantweb in /usr/local/lib/python3.7/site-packages (from iplantuml) (1.1.0)
Requirement already satisfied: requests in /usr/local/lib/python3.7/site-packages (from plantweb->iplantuml) (2.19.1)
Requirement already satisfied: six in /usr/local/lib/python3.7/site-packages (from plantweb->iplantuml) (1.11.0)
Requirement already satisfied: docutils in /usr/local/lib/python3.7/site-packages (from plantweb->iplantuml) (0.14)
Requirement already satisfied: idna<2.8,>=2.5 in /usr/local/lib/python3.7/site-packages (from requests->plantweb->iplantuml) (2.7)
Requirement already satisfied: urllib3<1.24,>=1.21.1 in /usr/local/lib/python3.7/site-packages (from requests->plantweb->iplantuml) (1.23)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/site-packages (from requests->plantweb->iplantuml) (2018.8.13)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python3.7/site-packages (from requests->plantweb->iplantuml) (3.0.4)
4. PythonでTDD¶
4.1. 仕様¶
1 から 100 までの数をプリントするプログラムを書け。
ただし 3 の倍数のときは数の代わりに「Fizz」と、
5 の倍数のときは「Buzz」とプリントし、
3 と 5 両方の倍数の場合には「FizzBuzz」とプリントすること。
4.2. 設計¶
4.2.1. ユースケース図¶
[42]:
%%plantuml --jar
@startuml
left to right direction
skinparam packageStyle rectangle
actor User
rectangle FizzBuzz {
User -- (Put Value)
}
@enduml
[42]:
4.2.2. クラス図¶
[43]:
%%plantuml --jar
@startuml
class FizzBuzz {
+ {static}generate(number)
+ iterate(count)
}
@enduml
[43]:
4.2.3. シーケンス図¶
[44]:
%%plantuml --jar
@startuml
actor User
User -> FizzBuzz: iterate
loop for each iterate
activate FizzBuzz
FizzBuzz -> FizzBuzz: generate
User <- FizzBuzz
deactivate FizzBuzz
end
@enduml
[44]:
4.2.4. TODO リスト¶
1 から 100 まで数をプリントできるようにする。
3 の倍数のときは数の代わりに「Fizz」をプリントできるようにする。
5 の倍数のときは「Buzz」とプリントできるようにする。
3 と 5 両方の倍数の場合には「FizzBuzz」とプリントできるようにする。
4.3. 開発¶
[45]:
import unittest
def fizz_buzz(number):
return 'Fizz'
class FizzBuzzTest(unittest.TestCase):
def test3の倍数のときはFizzを出す(self):
self.assertEqual(fizz_buzz(3),'Fizz')
unittest.main(argv=['first-arg-is-ignored'],exit=False)
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
[45]:
<unittest.main.TestProgram at 0x10b3e3590>