Python自动化测试之使用pytest-mock模拟用户输入

假如有这样一段代码要测试:

python 复制代码
# hello.py
def welcome() -> str:
    name = input("What's your name? ").strip()
    if not name:
        return 'Welcome to Guangdong~'
    return f'Hi, {name}. You are welcome!'

测试代码可以这样写:

python 复制代码
# test_hello.py
# pip install pytest pytest_mock
import pytest
from pytest_mock import MockerFixture
from hello import welcome

def test_welcome(
    # Use pytest-mock to mock user input
    # https://github.com/pytest-dev/pytest-mock
    mocker: MockerFixture,
):
    mocker.patch("builtins.input", return_value="")
    assert welcome() == 'Welcome to Guangdong~'
    mocker.patch("builtins.input", return_value=" ")
    assert welcome() == 'Welcome to Guangdong~'
    mocker.patch("builtins.input", return_value="Waket")
    assert welcome() == 'Hi, Waket. You are welcome!'
    mocker.patch("builtins.input", return_value="Joe")
    assert welcome() == 'Hi, Joe. You are welcome!'

运行:

bash 复制代码
pytest test_hello.py
相关推荐
拾荒的小海螺6 分钟前
C#:PdfiumViewer 高效解析和操作 PDF 的技术指南
开发语言·pdf·c#
人道领域8 分钟前
【零基础学java】(方法引用)
java·开发语言
Macbethad8 分钟前
TwinCAT半导体设备IO Simulator技术方案
开发语言
Iridescent112122 分钟前
Iridescent:Day48
python
BBB努力学习程序设计23 分钟前
Python迭代器与生成器:优雅的惰性计算艺术
python
BBB努力学习程序设计23 分钟前
Python描述符协议:属性访问的底层魔法
python
qq_3363139323 分钟前
java基础-IO流(打印流)
java·开发语言
缺点内向24 分钟前
C#: 精准掌控Excel工作流——激活工作表与选择单元格实战
开发语言·c#·excel
qq_3176203127 分钟前
第00章-Python学习大纲
python·python入门
Hello.Reader32 分钟前
Table & SQL API 配置从“默认可用”到“针对场景调优”的一套方法论
数据库·python·sql