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
相关推荐
前端小D2 分钟前
JS模块化
开发语言·前端·javascript
无限码力2 分钟前
华为OD技术面真题 - JAVA开发- spring框架 - 7
java·开发语言·华为od·华为od面试真题·华为odjava八股文·华为odjava开发题目·华为odjava开发高频题目
人工干智能5 分钟前
科普:%%matplotlib inline:魔法命令 (Cell Magic)
python·matplotlib
05大叔7 分钟前
优化器Adam,神经网络处理文本,CNN,RNN
开发语言·python·机器学习
Lyyaoo.8 分钟前
【JAVA基础面经】JAVA中的异常
java·开发语言
ByteCraze10 分钟前
JavaScript 深拷贝完全指南:从入门到精通
开发语言·javascript·ecmascript
wenzhangli711 分钟前
ooderAgent 龙虾时代的统一认证体系
开发语言·php
I Promise3426 分钟前
C++ 基础数据结构与 STL 容器详解
开发语言·数据结构·c++
morrisonwu28 分钟前
kafka4.2对应php rdkafka扩展安装以及php的producer和consumer写法及避坑
开发语言·php
徒 花30 分钟前
Python知识学习08
java·python·算法