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
相关推荐
先知后行。9 分钟前
python的类
开发语言·python
派大鑫wink14 分钟前
【Day12】String 类详解:不可变性、常用方法与字符串拼接优化
java·开发语言
JIngJaneIL17 分钟前
基于springboot + vue健康管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·后端
dyxal19 分钟前
Python包导入终极指南:子文件如何成功调用父目录模块
开发语言·python
nnerddboy20 分钟前
解决传统特征波段选择的不可解释性:2. SHAP和LIME
python·机器学习
电商API&Tina21 分钟前
【电商API接口】关于电商数据采集相关行业
java·python·oracle·django·sqlite·json·php
我居然是兔子28 分钟前
Java虚拟机(JVM)内存模型与垃圾回收全解析
java·开发语言·jvm
weixin_4215850140 分钟前
解释代码:val_pred = vxm_model.predict(val_input)--与tensor对比
python
小许好楠42 分钟前
java开发工程师-学习方式
java·开发语言·学习
xwill*1 小时前
python 字符串拼接
linux·windows·python