0

コンストラクターで例外をチェックする単体テストがあります。

import unittest
from jaboci import Jacobi

class TestJacobi(unittest.TestCase):

    def test_even(self):
        a = 11
        n = 12
        Jacobi(a, n)
        self.assertRaises(ValueError, Jacobi, a, n)

if __name__ == '__main__':
    unittest.main()

テスト中のクラス:

class Jacobi:

    def __init__(self, a, n):
        self.a = a
        self.n = n
        if n % 2 == 0:
            raise ValueError("N must be odd.")

で unittest を実行すると-m unittest discover、テストが失敗します。

E
======================================================================
ERROR: test_even (test_jacobi.TestJacobi)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/prasopes/prg/python/PycharmProjects/jacobi_symbol/test_jacobi.py", line 9, in test_even
    Jacobi(a, n)
  File "/home/prasopes/prg/python/PycharmProjects/jacobi_symbol/jaboci.py", line 7, in __init__
    raise ValueError("N must be odd.")
ValueError: N must be odd.

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)
4

2 に答える 2

4

Jacobi(a, n)前に電話しself.assertRaises(ValueError, Jacobi, a, n)ます。発生する例外はこの最初の呼び出しからのものであるため、テストはすぐに失敗します。との線に達することはありませんassertRaises

于 2012-11-08T20:54:05.607 に答える
0

[@mata の回答にコメントする担当者が不足しているため...]

明確にするために、次のいずれかを行う必要があります

  • 削除Jacobi(a, n)[@mata による暗示]
  • または、'Jacobi(n, a)' を呼び出します [@abarnert が @mata にコメントした場合]
于 2012-12-13T03:03:01.287 に答える