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
相关推荐
Mortalbreeze1 分钟前
C++11 ---- 右值引用、值类型
开发语言·c++
Wonderful U2 分钟前
基于Python+Django+psutil的轻量化服务器自动化监控平台实战
服务器·python·django
少司府3 分钟前
C++进阶:多态
c语言·开发语言·c++·多态·抽象类·虚函数·虚表指针
:1213 分钟前
Java泛型
java·开发语言
烤代码的吐司君7 分钟前
Redis 简介和安装
python
喵了几个咪8 分钟前
Headless 后端实践:基于Go的企业级多栈管理系统脚手架
开发语言·vue.js·后端·golang·reactjs·gowind
枫叶丹49 分钟前
【HarmonyOS 6.0】Map Kit瓦片图层深度解析:本地加载方式与瓦片数据缓存能力
开发语言·缓存·华为·harmonyos
小小龙学IT10 分钟前
Go 并发模式深度解析:Fan-out/Fan-in 高效处理大规模数据流
开发语言·后端·golang
a833319611 分钟前
c语言课程设计小游戏,c语言小游戏设计案例
c语言·开发语言
valan liya11 分钟前
C++ 继承
开发语言·c++