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
相关推荐
Bruce_Liuxiaowei18 分钟前
Nmap+Fofa 一体化信息搜集工具打造
运维·开发语言·网络·网络安全
智航GIS20 分钟前
5.1 if语句基础
开发语言·python
bu_shuo24 分钟前
MATLAB中的转置操作及其必要性
开发语言·算法·matlab
华研前沿标杆游学31 分钟前
2026年湖南省工业旅游线路
python
APIshop1 小时前
深入解析京东API接口:如何高效获取商品详情与SKU信息
python
KoalaShane1 小时前
El-slider 增加鼠标滚动滑块事件
开发语言·前端·javascript
94621931zyn61 小时前
备份恢复 - Cordova 与 OpenHarmony 混合开发实战
python
PNP Robotics1 小时前
PNP机器人受邀参加英业达具身智能活动
大数据·人工智能·python·学习·机器人
94621931zyn61 小时前
操作历史 - Cordova 与 OpenHarmony 混合开发实战
python
智算菩萨1 小时前
【Python进阶】搭建AI工程:Python模块、包与版本控制
开发语言·人工智能·python