我必须测试方法 pyautogui.click() 是否被调用。这是我的 Player.py 文件:
# Player.py
import pyautogui
class Player:
def play():
pyautogui.click(100, 100)
这是我的测试文件:
# Test_Player.py
import unittest
from Player import Player
class Test_Player(unittest.TestCase):
def test_play(self):
player = Player()
player.play()
# assert pyautogui.click is called once
我尝试过pyautogui.click = MagicMock()
还有许多其他事情,但我真的找不到如何断言 pyautogui.click() 被调用一次。
您正在寻找单元测试.mock.补丁 https://docs.python.org/3/library/unittest.mock.html#unittest.mock.patch。补丁在测试期间用模拟版本替换导入的模块。最重要的是要理解它,你必须修补一些东西进口地,而不是它居住的地方。这意味着你打补丁Player.pyautogui
, not pyautogui
本身。你应该阅读《在哪里打补丁》 https://docs.python.org/3/library/unittest.mock.html#id5在文档中。
您可以将补丁装饰器添加到您的测试函数中,并将您想要用模拟替换的内容传递给它。您传递给它的字符串应该是运行测试的相对路径(通常是项目的根目录)。我假设您的两个文件都位于同一文件夹中,并且您从该文件夹运行测试。
然后,补丁装饰器将向您的测试函数传递一个 MagicMock 实例作为参数self
。您可以随意命名它。我会称之为mock_pyautogui
在下面的示例中。在函数内部,您可以像平常一样做出断言。
import unittest
from Player import Player
class Test_Player(unittest.TestCase):
@unittest.mock.patch("Player.pyautogui")
def test_play(self, mock_pyautogui):
player = Player()
player.play()
self.assertEqual(1, mock_pyautogui.click.call_count)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)