unittest assertAlmostEqual(a, b)のドキュメントから、デフォルトでは と同等ですround(a-b, 7) == 0。あなたの場合、あなたは持っています:
In [8]: np.log(0) - np.log(0)
Out[8]: nan
In [9]: round(np.log(0) - np.log(0), 7)
Out[9]: nan
In [11]: np.nan == 0
Out[11]: False
それはあなたのテストが失敗する理由を説明しています。
unittest2を使用して機能させるには、次の例を示します。
import unittest2
import numpy as np
class Test_Assertions(unittest2.TestCase):
def test_float_inf(self):
self.assertAlmostEqual(float('inf'), float('inf'))
def test_numpy_inf(self):
self.assertAlmostEqual(np.log(0),np.log(0))
unittest2.main()
出力:
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
注意: unittest2 ではassertAlmostEqual()、最初に 2 つのオブジェクトが等しいかどうかをテストします。そうでない場合、結果は「はい」です。それ以外の場合は魔法を実行します (ほぼ等しい)。それらのほとんどには unittest2 機能が実装されているため、新しい python バージョン (2.7 >) でも動作するはずです (ワークステーションに python 2.7 > がないため、これについてはわかりません)。
これが役立つことを願っています:)