Pytest测试用例使用小结

news/2024/12/18 4:34:00/

基础使用

Pytest 测试用例实现代码

import pytest
from server.service import Service@pytest.fixture
def service():return Service(logger)class TestService:@classmethoddef setup_class(cls):"""初始化设置一次:return:"""logger.info("{}----类初始化设置".format(cls.__name__))@classmethoddef teardown_class(cls):"""结束后,清除设置:return:"""logger.info("{}----类清除设置".format(cls.__name__))def setup_method(self):"""执行每个方法前,初始化:return:"""logger.info("{}----执行每个方法前,初始化".format(self.__module__))def teardown_method(self):"""执行每个方法后,清除设置:return:"""logger.info("{}----执行每个方法后,清除设置".format(self.__module__)

可在类中添加类前后和方法前后固定执行的操作。

定义一个测试实例

@pytest.mark.parametrize(['params', 'expected'],  # 也可使用字符串传入'params, expected'传入[({"title": "测试用例"},Code.OK),  # 第一组测试参数]
)
def test_add(self, service, params, expected):result = dialogue_service.add_dialogue(**params)assert result.code == Code.OK

假设TestService类在test_service.py中,运行该类,添加main方法,之后在该文件目录下运行命令python test.service.py

if __name__ == '__main__':pytest.main()

运行测试类中一个测试用例

可在测试函数函数上添加标识装饰器@pytest.mark.[运行名称],如pytest.marks.add

@pytest.mark.add
def test_add(self, service, params, expected):result = service.add(**params)assert result.code == Code.OK

如果过需要添加参数,则标识按如下方式添加:

@pytest.mark.parametrize(['params', 'expected'],[pytest.param({"title": "测试用例",},Code.OK,marks=pytest.mark.add),]
)
def test_add(self, service, params, expected):result = service.add(**params)assert result.code == Code.OK

运行命令:pytest -m add

或直接使用命令,指定要运行的测试用例:pytest test_service.py::TestService::test_add

项目包引入路径问题

import os
import sys
current_path = os.getcwd()
sys.path.append(os.path.join(current_path.split('project_name')[0], 'project_name'))  # 不添加测试时无法找到正确路径

将当前项目路径添加到系统中。

参考:

Python自动化测试框架unittest与pytest的区别_pytest和unittest哪个好-CSDN博客


http://www.ppmy.cn/news/1556036.html

相关文章

scala隐式函数

1 定义 通常我们所说的隐式函数也称为 隐式转换,是使用 implicit 修饰的函数 作用: 可以通过一个隐式函数将一种类型转变为另一种类型 隐式转换有两种应用场景: 类型转换,隐式转换为期望类型 类型增强 2 示例 ①:类…

Linux Ubuntu文件夹带锁

单个文件带锁 在当前目录打开命令行界面 sudo chmod 777 文件名即可解锁 文件夹带锁 sudo chown -R 用户名 文件夹名

键盘行算法

给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。 请注意,字符串 不区分大小写,相同字母的大小写形式都被视为在同一行。 美式键盘 中: 第一行由字符 "qwertyuiop&quo…

JavaScript 中的 call、apply 和 bind 方法:函数调用的魔法与艺术

在JavaScript中,call、apply 和 bind 是三个非常重要的方法,它们允许我们以不同的方式调用函数。这些方法提供了强大的灵活性,使得我们可以控制函数的执行上下文(即 this 的值)以及传递参数的方式。本文将深入探讨这三…

oracle中特殊符号 存入数据库

场景: oracel数据库中存储特殊字符【&】执行insert into语句时,存储有问题。 问题描述 需要通过转义字符来存储 解决方案: 有三种解决方案 1、在SQL*PLUS下将其关闭:SQL Set define OFF; 然后再次执行导入脚本,O…

Linux DNS 协议概述

1. DNS 概述 互联网中,一台计算机与其他计算机通信时,通过 IP 地址唯一的标志自己。此时的 IP 地址就类似于我们日常生活中的电话号码。但是,这种纯数字的标识是比较难记忆的,而且数量也比较庞大。例如,每个 IPv4 地址…

#渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit(7)-Websocket劫持

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

RabbitMQ快速入门 - 生产者和消费者的简单实现

引入依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.7.3</version> </dependency> 编写生产者代码 RabbitMQ 默认的⽤于客户端连接的 TCP 端⼝号是 5672, 需要提前进⾏开…