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
相关推荐
流浪猪头拯救地球4 小时前
利用 Python 解密 / 加密 PDF 文件
python·pdf·php
列逍4 小时前
深入理解 C++ 异常:从概念到实战的全面解析
开发语言·c++
java1234_小锋4 小时前
简述Mybatis的插件运行原理?
java·开发语言·mybatis
花开花富贵4 小时前
多语言的爱意告白
python
charlie1145141914 小时前
勇闯前后端Week2:后端基础——HTTP与REST
开发语言·网络·笔记·网络协议·学习·http
福尔摩斯张5 小时前
二维数组详解:定义、初始化与实战
linux·开发语言·数据结构·c++·算法·排序算法
大佬,救命!!!5 小时前
C++函数式策略模式代码练习
开发语言·c++·学习笔记·学习方法·策略模式·迭代加深·多文件编译
T***16075 小时前
JavaScript打包
开发语言·javascript·ecmascript
qq_336313935 小时前
java基础-常用的API
java·开发语言
百锦再5 小时前
第21章 构建命令行工具
android·java·图像处理·python·计算机视觉·rust·django