python断言assertequal_python-尝试断言AlmostEqual / assertEqual时,不受支持的操作数类型...
我试图测试两个对象是否相等.该对象的类型是Point,它是由ROS(机器人操作系统)定义的类.我有以下测试:
def test_when_getting_position_after_2s_then_position_at_2s_is_returned(self):
self.expected_position.x = -self.radius
self.expected_position.y = 0
self.assertAlmostEqual(
self.expected_position,
self.trajectory.get_position_at(2))
我正在使用unittest,当我尝试断言它们是否几乎相等时,我收到一条错误消息:
TypeError: unsupported operand type(s) for -: ‘Point’ and ‘Point’
当我使用assertEqual时,出现相同的错误,并且我知道可以做到这一点:
self.assertAlmostEqual(self.expected_position.x, self.trajectory.get_position_at(1).x)
self.assertAlmostEqual(self.expected_position.y, self.trajectory.get_position_at(1).y)
但是,我希望能够主张立场而不是具体领域.我该如何实现?
编辑:异常的完整回溯是:
Error
Traceback (most recent call last):
File "/usr/lib/python2.7/unittest/case.py", line 329, in run
testMethod()
File "/home/m/turtlebot_ws/src/trajectory_tracking/src/test/trajectory/test_astroid_trajectory.py", line 26, in test_when_getting_position_after_1s_then_position_at_1s_is_returned
self.assertAlmostEqual(self.expected_position, self.trajectory.get_position_at(1))
File "/usr/lib/python2.7/unittest/case.py", line 554, in assertAlmostEqual
if round(abs(second-first), places) == 0:
TypeError: unsupported operand type(s) for -: 'Point' and 'Point'
解决方法:
assertAlmostEqual(a,b)要求abs(a-b)是有效的,但是您没有为Point类型定义减法运算符,因此是错误.
class Point(object):
...
def __sub__(self, other): # <-- define the subtraction operator so `a - b` is valid
return Vector(self.x - other.x, self.y - other.y)
class Vector(object):
...
def __abs__(self): # <-- define the absolute function so `abs(v)` is valid
return (self.x*self.x + self.y*self.y)**0.5
如果您不能在类定义中提供__sub__,则可以在测试用例中使用monkey-patching来提供它.
def sub_point(self, other):
return complex(self.x - other.x, self.y - other.y)
# ^ for simplicity we abuse a complex number as a 2D vector.
Point.__sub__ = sub_point
标签:python-unittest,python
来源: https://codeday.me/bug/20191112/2023827.html
python断言assertequal_python-尝试断言AlmostEqual / assertEqual时,不受支持的操作数类型...相关推荐
- float在python中的书写形式错误的是_python – 不支持的操作数类型:’float’和’str’错误...
我是 Python的新手,我现在仍然坚持做什么,因为我一直收到这个错误.我试图将得分文件的内容添加到一起并获得平均值,但我似乎无法让它工作. 我的代码: # open and read file st ...
- python支持list类型吗_Python-不支持的操作数类型为%:“list”和“int”
我看了stackoverflow上的其他问题,但它们不同,似乎不适用于这个问题,所以这里. 我已经编写了一个简单的脚本,它可以打印出1-49之间的每个数字,并使用range函数将其放入一个列表中. 现 ...
- python支持list类型吗_Python Numpy不支持的操作数类型“list”“list”
编辑答案: 初始列表的元素是列表.这些列表的长度不同,因此强制转换为NumPy数组将生成dtype对象的数组,即数组的元素是列表.请看这里:https://stackoverflow.com/a/33 ...
- PhotoshopCC 使用透视剪裁工具时提示:无法使用透视剪裁工具因为图像包含不受支持的图层类型?
提示:无法试用透视裁剪工具 因为图像包含不受支持的图层类型. 原因:这个工具只对一个单图层的PSD文档或者全是栅格化图层生效,如果有2或2个以上图层,那就不行!如果有智能对象图层也不行,智能对象图层保 ...
- python断言assertequal_python中那个断言assert的优化
Python Assert 为何不尽如人意# Python中的断言用起来非常简单,你可以在assert后面跟上任意判断条件,如果断言失败则会抛出异常. Copy >>> assert ...
- python 正则表达式 断言 不定长表达式_MyEssay 之 Python正则表达式 —— 四种断言扩展的理解...
我们经常用正则表达式来检测一个字符串中包含某个子串,要表示一个字符串中不包含单个的某字符或某些字符也很容易,用[^...]形式就可以了.但是要表示一个字符串中不包含某个子串(由字符序列构成)的时候,用 ...
- python你真的懂断言嘛?
目录 前言 一.python中的断言 二.具体案例 前言 先来看看断言是什么?它又有什么用? 编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设.程序员相信在程序中的某个特定点该表达 ...
- python的assert(断言)异常步骤机制
python的assert(断言)异常步骤机制 文章目录: 断言(assert): 就是判断expression 这个表达式语句是否正确,所以切记,断言是有一个判断的过程!!! 格式: assert ...
- 5 JMeter断言-Jmeter响应中出现乱码时
文章目录 2 JMeter 2.5 JMeter断言 2.5.1 响应断言 2.5.2 JSON断言 2.5.3 断言持续时间 3 使用问题 3.1 jmeter响应中出现乱码时 2 JMeter 2 ...
最新文章
- 深度学习光环背后,机器学习的一些新进展!!!
- 小白入门:大型网站技术架构负载均衡技术介绍及学习资源推荐
- 使用java搭建直播平台,我就不信你还听不明白了!
- 工具资源系列之给mac装个虚拟机
- 《循序渐进学Spark》一1.6 使用Spark Shell开发运行Spark程序
- 修改db2管理服务器,创建DB2管理服务器的两种情况
- 转 C++宏定义详解
- 自动填充html_第 11 篇:自动生成文章摘要
- Beyond Compare 出现“这个许可证密钥已被撤销”的解决办法(不会删除记录)
- SAR成像(七):RD成像算法
- weiphp 简介--笔记
- 在linux系统下安装oracle前的准备工作(配置oracle环境变量)
- java 循环读取文件_JAVA读写文件中的循环问题
- Basic SECS concept渣渣中文翻译
- 2021年茶艺师(初级)考试报名及茶艺师(初级)考试技巧
- Hex Fiend——mac 下 WinHex的完美替代
- hashcat在windows上的安装与简单使用
- Streaming Telemetry翻译学习
- 管理团队需要的能力和技术
- python 报价机器人_100行代码实现报价机器人公众号后台
热门文章
- LiveVideoStackCon 2018社区编辑门票兑换启动
- Serverless.com CEO首次访华!探讨无服务器技术落地
- calico 跨主机容器网络通信
- Python基于OpenCV的人脸检测
- 从基础货币到资金到债券,固收市场的分层都在这了
- 解决创建maven项目后,不能创建scala
- 大型电商网站的页面静态化方案是如何支撑亿级流量的?
- matlab线性拟合和非线性拟合,matlab多元非线性拟合
- lazada发货_Lazada怎么发货?最全Lazada发货流程及注意事项!值得收藏!
- 栈顶指针到底指向哪_被称为“程序员试金石”的指针真的没有那么难!不信的话你来看看