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
相关推荐
爱编程的鱼16 分钟前
C# 结构(Struct)
开发语言·人工智能·算法·c#
Tiger_shl18 分钟前
【Python语言基础】24、并发编程
java·数据库·python
<<23 分钟前
基于Django的权限管理平台
后端·python·django
只可远观28 分钟前
Flutter Dart 循环语句 for while do..while break、continue
开发语言·javascript·ecmascript
QMT量化交易1 小时前
如何解决PyQt从主窗口打开新窗口时出现闪退的问题
python·pyqt
databook1 小时前
『Plotly实战指南』--样式定制高级篇
python·数据分析·数据可视化
吴_知遇1 小时前
【华为OD机试真题】428、连续字母长度 | 机试真题+思路参考+代码解析(E卷)(C++)
开发语言·c++·华为od
basketball6162 小时前
Python torchvision.transforms 下常用图像处理方法
开发语言·图像处理·python
兔子蟹子2 小时前
Java集合框架解析
java·windows·python
宁酱醇2 小时前
各种各样的bug合集
开发语言·笔记·python·gitlab·bug