回答編集履歴

3

説明補足

2020/02/09 02:09

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  例えば、無限ループ処理部分を関数化してもらい、テスト時はその関数を例外発生させるmockに置き換えて、例外発生すればテスト成功ということにできます。
4
4
 
5
- 無限ループするときの `while True:` のような処理部分を `while loop():` のようにして普段は `return True` するだけの関数にしておいて、テスト時にloop関数を例外発生させるmockに置き換えてもいいと思います。
5
+ 無限ループするときの `while True:` のような処理部分を `while loop():` のようにして普段は `return True` するだけのloop関数にしておいて、テスト時にloop関数を例外発生させるmockに置き換えてもいいと思います。
6
6
 
7
7
  あとは、unittest側で実行時間制限できるなら、10秒以内に処理が終了しなければ成功判定するなどの手もあると思います。

2

説明補足

2020/02/09 02:09

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,7 +1,7 @@
1
1
  テスト対象はテスト可能であることが条件なので、「無限ループに入った」ことを判断できるようにして、処理を終了できる必要があります。
2
2
 
3
- 例えば、無限ループ処理を関数化してもらい、テスト時はその関数を例外発生させるmockに置き換えて、例外発生すればテスト成功ということにできます。
3
+ 例えば、無限ループ処理部分を関数化してもらい、テスト時はその関数を例外発生させるmockに置き換えて、例外発生すればテスト成功ということにできます。
4
4
 
5
- 無限ループするときの `while True:` のような処理を `while loop():` のようにして loop関数例外発生させるmockに置き換えてもいいと思います。
5
+ 無限ループするときの `while True:` のような処理部分を `while loop():` のようにして普段は `return True` するだけの関数にしておいて、テスト時にloop関数例外発生させるmockに置き換えてもいいと思います。
6
6
 
7
7
  あとは、unittest側で実行時間制限できるなら、10秒以内に処理が終了しなければ成功判定するなどの手もあると思います。

1

コロン追記

2020/02/09 02:04

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  例えば、無限ループ処理を関数化してもらい、テスト時はその関数を例外発生させるmockに置き換えて、例外発生すればテスト成功ということにできます。
4
4
 
5
- 無限ループするときの `while True:` のような処理を `while loop()` のようにして loop関数で例外発生させるmockに置き換えてもいいと思います。
5
+ 無限ループするときの `while True:` のような処理を `while loop():` のようにして loop関数で例外発生させるmockに置き換えてもいいと思います。
6
6
 
7
7
  あとは、unittest側で実行時間制限できるなら、10秒以内に処理が終了しなければ成功判定するなどの手もあると思います。