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
相关推荐
惺忪979818 分钟前
Qt C++11/14/17 新特性大全详解
开发语言·c++
川石课堂软件测试20 分钟前
自动化测试的基本概念及常用框架
数据库·python·功能测试·测试工具·单元测试·自动化·流程图
灰勒塔德22 分钟前
jetson orin nano super开发指南
linux·服务器·python
Pacify_The_North23 分钟前
【C++11(二)】可变参数模板和 lambda表达式
java·开发语言·c++
顺顺 尼24 分钟前
包装器c++11
开发语言·c++
阿里嘎多学长25 分钟前
2025-12-05 GitHub 热点项目精选
开发语言·程序员·github·代码托管
王光环29 分钟前
C语言写exe脚本
c语言·开发语言
82782093731 分钟前
python scp 备份
开发语言·python
leoufung39 分钟前
图解除法查询问题:用 C 语言和 DFS 实现带权有向图的路径乘积
c语言·开发语言·深度优先
poggioxay41 分钟前
JAVA零基础入门知识3(持续更新中)
java·开发语言·python