我可以在 unittest 中比较 2 个浮点数的相似性而不是相等性吗?
Can I compare 2 floats in unittest for similarity but not equality?
我上面有这个测试。我的问题是在训练我的机器学习模型后,每次的结果都有点不同。
所以,我想在我的 Flask 中类似时断言 TRUE-api。
ChangeToSurvive
是 float
,所以有时 29.2
并且在训练后再次更改为 30.5
或其他数字。
def test_by_name(self):
post_data = {
'name': 'Andre'
}
resp = self.app.post('/survivals',
data=json.dumps(post_data),
content_type='application/json')
self.assertEqual(resp.status_code, 200)
self.assertEqual(resp.content_type, 'application/json')
content = json.loads(resp.get_data(as_text=True))
size = len(content['Passengers'])
self.assertEqual(size, 2)
self.maxDiff = None
expected = {
"Passengers": [
{
"SibSp": 1,
"Sex": "0",
"PassengerId": 925,
"Survived": 1,
"Parch": 2,
"Age": 1,
"Name": "Johnston, Mrs. Andrew G (Elizabeth Lily\" Watson)\"",
"ChangeToSurvive": 74.7,
"Embarked": "0"
},
{
"SibSp": 0,
"Sex": "1",
"PassengerId": 1096,
"Survived": 0,
"Parch": 0,
"Age": 1,
"Name": "Andrew, Mr. Frank Thomas",
"ChangeToSurvive": 29.2,
"Embarked": "0"
}
]
}
self.assertEqual(content, expected) # each train in a model the ChangeToSurvive can a little diferrent
unittest
has assertAlmostEqual
方法:
actual_value = # extract float value from content
expected_value = # extract float value from expected
delta = 1.7
self.assertAlmostEqual(actual_value, expected_value, delta = delta)
并且您需要对要验证的字典中的所有值重复此操作。最好用测试实用程序方法包装它。
我上面有这个测试。我的问题是在训练我的机器学习模型后,每次的结果都有点不同。
所以,我想在我的 Flask 中类似时断言 TRUE-api。
ChangeToSurvive
是 float
,所以有时 29.2
并且在训练后再次更改为 30.5
或其他数字。
def test_by_name(self):
post_data = {
'name': 'Andre'
}
resp = self.app.post('/survivals',
data=json.dumps(post_data),
content_type='application/json')
self.assertEqual(resp.status_code, 200)
self.assertEqual(resp.content_type, 'application/json')
content = json.loads(resp.get_data(as_text=True))
size = len(content['Passengers'])
self.assertEqual(size, 2)
self.maxDiff = None
expected = {
"Passengers": [
{
"SibSp": 1,
"Sex": "0",
"PassengerId": 925,
"Survived": 1,
"Parch": 2,
"Age": 1,
"Name": "Johnston, Mrs. Andrew G (Elizabeth Lily\" Watson)\"",
"ChangeToSurvive": 74.7,
"Embarked": "0"
},
{
"SibSp": 0,
"Sex": "1",
"PassengerId": 1096,
"Survived": 0,
"Parch": 0,
"Age": 1,
"Name": "Andrew, Mr. Frank Thomas",
"ChangeToSurvive": 29.2,
"Embarked": "0"
}
]
}
self.assertEqual(content, expected) # each train in a model the ChangeToSurvive can a little diferrent
unittest
has assertAlmostEqual
方法:
actual_value = # extract float value from content
expected_value = # extract float value from expected
delta = 1.7
self.assertAlmostEqual(actual_value, expected_value, delta = delta)
并且您需要对要验证的字典中的所有值重复此操作。最好用测试实用程序方法包装它。