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
相关推荐
alvin_200513 分钟前
python之OpenGL应用(五)变换
python·opengl
燕山罗成20 分钟前
JAVA多线程基础
java·开发语言
深蓝电商API21 分钟前
服务器部署爬虫:Supervisor 进程守护
爬虫·python
是梦终空11626 分钟前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
Yvonne爱编码33 分钟前
JAVA数据结构 DAY7-二叉树
java·开发语言·数据结构
竹林81839 分钟前
用Python requests搞定Cookie登录,我绕过了三个大坑才成功
爬虫·python·自动化运维
En^_^Joy39 分钟前
JavaScript入门指南:从零到精通
开发语言·javascript
于先生吖1 小时前
2026 新版 Java 同城上门家政服务系统源码 完整可运营
java·开发语言
MIXLLRED1 小时前
Python模块详解(一)—— socket 和 threading 模块
开发语言·python·socket·threading
csbysj20201 小时前
桥接模式(Bridge Pattern)
开发语言