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
相关推荐
我是唐青枫几秒前
C#.NET ReaderWriterLockSlim 深入解析:读写锁原理、升级锁与使用边界
开发语言·c#·.net
4ever.ov02 分钟前
定时器/时间轮
开发语言·c++·c·muduo·llinux
飞Link3 分钟前
LangChain 核心链式架构演进史:从顺序链到企业级路由兜底实战
python·架构·langchain
啥咕啦呛8 分钟前
java打卡学习3:ArrayList扩容机制
java·python·学习
编程之升级打怪11 分钟前
用排他锁来实现Python语言的变量值更新
开发语言·python
rrrjqy11 分钟前
Java基础篇(二)
java·开发语言
打乒乓球只会抽12 分钟前
【无标题】
python
我命由我1234517 分钟前
React - React 配置代理、搜索案例(Fetch + PubSub)、React 路由基本使用、NavLink
开发语言·前端·javascript·react.js·前端框架·html·ecmascript
沐知全栈开发17 分钟前
R 循环:深度解析与高效运用
开发语言
路小雨~21 分钟前
Django 学习笔记:从入门到项目开发的完整梳理
笔记·python·学习·django