如何验证python函数中行代码的输出

Posted

技术标签:

【中文标题】如何验证python函数中行代码的输出【英文标题】:How to verify outputs of line code in a python function 【发布时间】:2019-03-10 07:44:09 【问题描述】:

我在下面测试了一个函数,如何验证下面函数中特定行的输出。

def data():
   dev = Device(host="1.1.1.1", user="test", password="test123", port=22, 
   normalize=True)
   dev.open()
   resp = dev.rpc.get_interface_information(extensive=True)
   dev.close()

   for x in resp.findall(xxxxxxxxx): 
      if aaa
      else:

没有函数 data() 我可以只输入 print(resp) 和 print(x) 来检查验证 rpc send 命令或上面的 for 循环的输出。但是,当我在函数中添加命令时,我无法执行相同的操作。在函数中,我需要验证输出的 for 循环和其他 rpc 发送命令的其他行代码很少。我在下面的 python 函数中检查代码行的特定输出....我尝试添加 data() 并在下面返回,但它没有返回任何内容

def data():
   dev = Device(host="1.1.1.1", user="test", password="test123", port=22, 
   normalize=True)
   dev.open()
   resp = dev.rpc.get_interface_information(extensive=True)
   return resp
   dev.close()

   for x in resp.findall(xxxxxxxxx): 
      if aaa
      else:
   return x 
data()

这是因为我需要确保函数中使用的行代码正确且输出验证正常。请帮助并告诉我正确的方法。谢谢。

出现错误 NameError: name 'request' is not defined

def data(request):
   dev = Device(host="1.1.1.1", user="test", password="test123", port=22, 
   normalize=True)
   dev.open()
   resp = dev.rpc.get_interface_information(extensive=True)
   print(resp)
   dev.close()

   for x in resp.findall(xxxxxxxxx): 
      if aaa
      else:
   return resp 
data(request)

【问题讨论】:

data() 不返回任何内容,因为您没有在函数中包含 returnstatement。要比较字符串、浮点数和整数,请使用==。要比较 python 对象的实例或类型,请查找 ìsinstance() and type()`。但是,我不清楚您要比较哪个部分。请确保您的代码可被其他用户重现。 嗨先生..谢谢你....我通过 rpc 发送命令,这个命令行提供了一个详细信息作为响应,我在 for 循环中使用 findall 进行搜索。我在 dev.close() 行之前包含 return resp 并测试...没有生成输出...在我的终端上... 函数中只是print(resp) - 而不是返回 它不起作用,先生......通常在函数之外......我只是使用 print() 但是在函数中它不能那样工作...... 【参考方案1】:

打印语句应该在函数内部工作。我猜你是在返回后放置打印语句。在代码中,在将要执行 return 语句之后您没有提供任何内容,因为 return 语句将退出函数。当你完成所有你希望你的函数执行的任务时,确保你把 return 放在最后。

另外,一个函数中只能有一个 return 语句。如果要返回多个变量,请将它们放在一个列表中或使用类似

return a, b

然后像这样抓住它们

val_a, val_b = data()

【讨论】:

您好先生...如果函数有参数def data(req)? 这不会改变返回语句。您只需要更改调用函数的方式。 val_a, val_b = data(req) 其中 req 是您想要作为参数传递的任何内容。 我用 return resp、print(resp) 和 data() 测试它 - 好的可以生成打印输出但是当我测试 return resp、print(resp) 和 data(req) - 错误 NameError:名称“req”未定义...你知道可能是什么问题吗? 你之前定义过req吗?当您调用数据函数时,req 应该是一个变量 它是 django 的 views.py 文件.. 抱歉打错了....应该是 def data(request):

以上是关于如何验证python函数中行代码的输出的主要内容,如果未能解决你的问题,请参考以下文章

Python学习:8.小项目之登录注册验证

python中行首的@运算符[重复]

python装饰器原理及相关操作

如何从 python 中的多处理中获取函数输出?

Python中的函数

来自pandas dataframe python的barh图中行的不同颜色