math.isnan(x)
sẽ nâng cao một TypeError
nếu x
không phải là một float
hay một Real
.
Nó tốt hơn để sử dụng một cái gì đó như thế này:
import math
class NumericAssertions:
"""
This class is following the UnitTest naming conventions.
It is meant to be used along with unittest.TestCase like so :
class MyTest(unittest.TestCase, NumericAssertions):
...
It needs python >= 2.6
"""
def assertIsNaN(self, value, msg=None):
"""
Fail if provided value is not NaN
"""
standardMsg = "%s is not NaN" % str(value)
try:
if not math.isnan(value):
self.fail(self._formatMessage(msg, standardMsg))
except:
self.fail(self._formatMessage(msg, standardMsg))
def assertIsNotNaN(self, value, msg=None):
"""
Fail if provided value is NaN
"""
standardMsg = "Provided value is NaN"
try:
if math.isnan(value):
self.fail(self._formatMessage(msg, standardMsg))
except:
pass
Sau đó bạn có thể sử dụng self.assertIsNaN()
và self.assertIsNotNaN()
.
bản sao có thể có của [Làm thế nào để bạn kiểm tra xem liệu một đôi có bằng NaN trong Java không?] (Http://stackoverflow.com/questions/1456566/how-do-you-test-to-see-if -a-đôi-là-bằng-nan-in-java) – Raedwald