如何测试URL被调用(来自另一个线程)

时间:2018-03-16 10:38:41

标签: python mocking python-requests

我有一个简单的线程,将计数器与限制进行比较,并在计数器超出限制时调用URL。

我想对这个线程进行单元测试,断言当值超过限制时调用URL。

怎么可以这样做?我查看过请求 - 模拟,但它似乎仅在请求来自当前代码块时才起作用。

要测试的代码:

class SimpleCounter(threading.Thread):
    # Omitted ctor & other methods for brevity
    def run(self):
        limit = 5
        while not self.must_stop:
            if self.value > limit:
                requests.get("http://localhost/alarm.cgi")
            time.sleep(1)

测试代码:

def test_simplecounterapp():
    counter = SimpleCounter()
    counter.start()
    for i in range(6):
        counter.increment()
    # assert http://localhost/alarm.cgi is indeed called 

1 个答案:

答案 0 :(得分:0)

回答我自己的问题。

我通过模拟urllib2.urlopen并断言模拟被调用来解决了这个问题。