Python单元测试:测试两个角度是否几乎相等
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python单元测试:测试两个角度是否几乎相等,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1040字,纯文字阅读大概需要2分钟。
内容图文
![Python单元测试:测试两个角度是否几乎相等](/upload/InfoBanner/zyjiaocheng/680/be0415cfd17e43bab2ef05235363988a.jpg)
我想测试一个输出以度为单位的航向的函数,该航向是区间[0,360)中的数字.由于结果是浮点数,因此无法将实际结果与unittest.assertEqual()的预期结果进行比较. unittest.assertAlmostEqual()更好,因为它提供了公差.此方法适用于不接近0度的航向.
问题:测试预期值为0度的航向的正确方法是什么? assertAlmostEquals()仅包含略大于0度的角度,但会丢失略小于0度的角度,即360度…
解决方法:
您可以使用单位圆上两个点之间的平方欧几里得距离和余弦定律来获得两个角度之间的绝对差:
from math import sin, cos, acos
from unittest import assertAlmostEqual
def assertAlmostEqualAngles(x, y, **kwargs):
c2 = (sin(x)-sin(y))**2 + (cos(x)-cos(y))**2
angle_diff = acos((2.0 - c2)/2.0) # a = b = 1
assertAlmostEqual(angle_diff, 0.0, **kwargs)
这适用于弧度.如果角度以度为单位,则必须进行转换:
from math import sin, cos, acos, radians, degrees
from unittest import assertAlmostEqual
def assertAlmostEqualAngles(x, y, **kwargs):
x,y = radians(x),radians(y)
c2 = (sin(x)-sin(y))**2 + (cos(x)-cos(y))**2
angle_diff = degrees(acos((2.0 - c2)/2.0))
assertAlmostEqual(angle_diff, 0.0, **kwargs)
内容总结
以上是互联网集市为您收集整理的Python单元测试:测试两个角度是否几乎相等全部内容,希望文章能够帮你解决Python单元测试:测试两个角度是否几乎相等所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。