【问题标题】:Unit testing a Python Azure timer function对 Python Azure 计时器函数进行单元测试
【发布时间】:2020-11-30 22:31:34
【问题描述】:

天蓝色provide documentation for unit testing HTTP and Queue Python functions。这是通过创建模拟 QueueMessageHTTPRequest 来完成的。但是,没有为Timer functions 创建单元测试的文档。

有一个TimerRequest class,但创建它的新实例失败并出现以下错误:

req = func.TimerRequest()

TypeError: 无法用抽象实例化抽象类 TimerRequest 过期方法

为 Python Azure 计时器函数创建单元测试的正确方法是什么?

【问题讨论】:

  • 您不能将您的实际业务逻辑抽象到另一个例程中,而计时器触发的函数除了调用该例程之外什么都不做?然后你也可以针对那个编写你的单元测试。或者你想具体测试一下 Timer 什么?
  • 我可以这样做,但这是无法测试实际功能的一种解决方法,队列和 HTTP 触发器类型可能如此。我想测试这个函数,因为它会被调用。
  • 再次问我:你真正想测试什么? trimer 触发器本身没有输入(与 HTTP 或队列触发函数相比)
  • 它没有输入,但它可以在设置或不设置属性 past_due 的情况下运行。

标签: python azure unit-testing azure-functions


【解决方案1】:

接受的答案不再对我有用,最后我创建了一个将 past_due 属性设置为 True 的类,并且成功了:

import unittest
from azure.functions import TimerRequest
from my_func import main

class MockTimer():
    def __init__(self):
        self.past_due = True


class TestFunction(unittest.TestCase):
    def test_my_function(self):
        timer = MockTimer()
        resp = main(timer)

【讨论】:

    【解决方案2】:

    As discussed in a GitHub issue,这可以通过将TrueFalse 传递给构造函数来完成,例如

    from functionTimer import main
    main(False)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      相关资源
      最近更新 更多