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
相关推荐
m0_58709899几秒前
Qt,二进制文件读写建议
开发语言·qt
lewis_lk2 分钟前
uv: Python 新一代极速包管理工具
python
爱敲代码的小鱼5 分钟前
springsecurity:
java·开发语言·数据库
秋田君7 分钟前
QT_QT信号与槽机制
开发语言·数据库·qt
辞旧 lekkk8 分钟前
【Qt】 系统相关:事件与定时器
开发语言·qt·学习·萌新
Wang's Blog10 分钟前
Java框架快速入门: Spring Bean核心配置与实例化详解
java·开发语言·spring
promising_xxx14 分钟前
深度学习个人开源知识库 深度筑基 | DeepBase
人工智能·python·深度学习·计算机视觉·ai·语言模型·nlp
三十岁老牛再出发23 分钟前
07.07.每日总结
c语言·windows·python
aaPIXa62231 分钟前
C++ TensorRT Edge-LLM 边缘推理框架:从原理到实战
开发语言·c++·edge
C137的本贾尼40 分钟前
MCP 完全指南:从零开始掌握模型上下文协议
人工智能·python