2016-05-04 9 views
0

私はPythonでtic tac toeゲームを作成しました。私はいくつかの機能をテストして、正常に機能することを確認したいが、どうやってそれをどうやって進めるのか分からない。 assertTrueとassertEqualを含むいくつかの異なるメソッドを試しました。私がテストしたい機能は、ボードの行、列、および対角線をチェックして、すべてのXまたはOと基本的に勝者があるかどうかを確認します。ここに私がテストしたい機能があります。Python unittestでブール関数をテストする

def checkRows(letter, board): 
    if ((board[0] == letter and board[1] == letter and board[2] == letter) or (board[3] == letter and board[4] == letter and board[5] == letter) or (board[6] == letter and board[7] == letter and board[8] == letter)) 
      return True 
    else: 
      return False 

def checkCols(letter, board): 
    if ((board[0] == letter and board[3] == letter and board[6] == letter) or (board[1] == letter and board[4] == letter and board[7] == letter) or (board[2] == letter and board[5] == letter and board[8] == letter)) 
      return True 
    else: 
      return False 

def checkDiags(letter, board): 
    if ((board[0] == letter and board[4] == letter and board[8] == letter) or (board[2] == letter and board[4] == letter and board[6] == letter)) 
      return True 
    else: 
      return False 

私はcheckCols機能がこのある動作しないために、今実行しているテスト:

import unittest 
import tictactoeFuncs 

#CheckCols tests. 
class TestCases(unittest.TestCase): 
    def test_func1(self): 
      letter = X 
      board = letter 
      L2 = tictactoeFuncs.checkCols(letter, board) 
      self.assertEqual(L2, True) 


# Run the unit tests. 
if __name__ == '__main__': 
    unittest.main() 
私はXまたはOに等しい文字を設定しようとしたが、それは動作しませんでした

"グローバル名 'Xは定義されていません"というエラーが表示されるので、関数のテスト方法は非常に混乱しています。

+5

'letter = 10;ボード=レター ' - 何? 'check'関数がどのような引数を取るべきなのか知っていますか?それらの種類の議論を構築する。 '10'は有効なチック・タック・トゥ・レターでも有効なボードでもありません。 – user2357112

+1

何がうまくいかないのかをもっと詳しく説明するために更新してください。問題は、 'board'がリストではなく数字であることが関係していると思いますか? – JETM

+0

'checkDiags'は、2つの正方形について2つの検査を行い、3つの正方形に対しても1つの検査を行う。 – TigerhawkT3

答えて

1

私はそれを理解したかもしれないと思う。

class TestCases(unittest.TestCase): 
     def test_func1(self): 
      letter = "X" 
      board = ([1],[2],[3]) 
      board == letter 
      L2 = tictactoeFuncs.checkCols(letter, board) 
      self.assertEqual(L2, False) 


# Run the unit tests. 
if __name__ == '__main__': 
    unittest.main() 
関連する問題