【问题标题】:how to compare value in python [closed]如何在python中比较值[关闭]
【发布时间】:2022-01-22 09:08:21
【问题描述】:

我是 python 新手,这里我从服务器响应中获取值 (0, 1),如何在 python 中的 assertTrue 中使用它。

  ret = (0, 1)  // (0, 1) this is response getting from server
  self.assertTrue(ret  == '(0, 1)')  // is this right way to do?

【问题讨论】:

  • 您按照分配它的方式进行操作:self.assertTure(ret == (0,1))
  • 你从服务器得到什么(即什么类型)?它真的是一个元组吗?您是否处理服务器响应以获取此元组?发帖minimal reproducible example
  • 还要注意在python中我们使用#作为cmets,而不是//

标签: python automation pycharm rpa


【解决方案1】:

假设来自服务器的响应是一个元组,你可以用一个简单的测试用例来测试它,如下所示:

import unittest

response = (0, 1)
  
class SimpleTest(unittest.TestCase):
    # Returns True or False. 
    def test(self):        
        self.assertTrue((response == (0, 1)), "The response is not (0, 1)")
  
if __name__ == '__main__':
    unittest.main()

如果您收到的不是元组而是字符串,您可以将 assertTrue 条件中的值从(0, 1) 更改为"(0, 1)"

详情请咨询documentation on unittest

如果您不想使用unittest,但您确实想确保响应正确,您也可以使用assert 语句(但是,可能有更好的方法来检查):

response = (0, 1)
assert(response == (0, 1)) # This will do nothing

assert(response == (1, 1)) # This results in an AssertionError

由于AssertionError,您的程序将停止。如果你不想要这个,你可以使用try-except 块:

response = (0, 1)
  
try:
    assert(response == (0, 1))
except AssertionError:
    print("The response is not correct.")

编辑:

由于您收到的响应是MQTTMessageInfo 类型,因此您想与此进行比较。我没有找到太多关于这种类型的文档,但你可以看到what the class looks like on Github

在这里,您可以看到您看到的响应是以下内容的字符串表示形式:

def __str__(self):
    return str((self.rc, self.mid))

(0, 1) 中的第一个值是self.rc,第二个是self.mid。如果你只想断言这两个值确实是正确的,你可以将上面的测试用例修改成这样:

self.assertTrue((response.rc == 0 and response.mid == 1)), "The MQTTMessageInfo is not rc=0, and mid=1")

【讨论】:

  • print((res)) print(type(res)) (0, 1)
  • 我对这个Eclipse Paho MQTT Python Client 知之甚少,但我已经通过查看他们的 GitHub 能够理解的内容更新了我的答案。希望这会有所帮助。
猜你喜欢
  • 2012-06-23
  • 1970-01-01
  • 2019-07-10
  • 2020-12-20
  • 2019-01-03
  • 1970-01-01
  • 2015-01-19
  • 2019-08-31
  • 1970-01-01
相关资源
最近更新 更多