python中test的用法_Python基础介绍 | 使用pytest进行测试

Pytest 是 Python 的一种单元测试框架,与 Python 自带的 unittest 测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高。

Pytest 是一个成熟的全功能的 Python 测试工具,可以帮助你写出更好的程序,让我们很方便的编写测试用例。

适合从简单的单元到复杂的功能测试。有很多的第三方插件可以自定义扩展,并且支持 Allure,生成可视化的测试报告和测试结果,并能输出 log 信息。

Pytest官网,简单来说,就是你可以写一个测试的程序,尤其在实现项目之前,这样的好处是能够在一开始的时候(不知道代码逻辑之前)将目标的输出确认好,避免写出为了通过测试而测试的测试。

为什么要写测试?谁想进行手动测试?

当你修复错误或添加新功能时,测试可以验证你在途中有没有破坏任何内容

如果你有明确的要求,则可以针对每个要求进行匹配测试

你不必害怕重构

测试记录了你的实施 - 它们向其他人展示了你的实施案例

这份清单无穷无尽......

简而言之,TDD的基本思想是在编写实际实现之前编写测试。也许这种方法最重要的好处是开发人员专注于编写与程序应该做的匹配的测试。如果测试是在实际实施之后编写的,那么测试的风险很高,这些测试只是为已经编写的逻辑显示绿灯。

测试是现代敏捷软件开发中的重要的一环,这就是为什么在Python学习路径中尽早开始思考TDD的重要性。

TDD的工作流程可归纳如下:为你要实施的更改/功能/错误修复添加测试用例

运行所有测试并检查新测试是否失败

实施所需的更改

运行测试并验证是否全部通过

重构

在Notebook中运行pytest

这些是在Jupyter单元格中运行pytest所需的步骤。您可以将此单元格的内容复制到包含测试的Notebook中。

# Let's make sure pytest and ipytest packages are installed

# ipytest is required for running pytest inside Jupyter notebooks

import sys

!{sys.executable} -m pip install pytest

!{sys.executable} -m pip install ipytest

import ipytest.magics

import pytest

# Filename has to be set explicitly for ipytest

__file__ = 'testing1.ipynb'

Pytest测试用例

让我们考虑一下sum_of_three_numbers我们想要编写测试的函数。

如函数

#This would be in your e.g. implementation.py

def sum_of_three_numbers (num1 , num2 , num3 )中:

return num1 + num2 + num3

Pytest测试用例实际上与您在练习中看到的非常相似。通过将每个练习划分为三个单元格,大多数练习的结构类似于pytest测试用例:设置测试中使用的变量

你的实现

使用断言验证你的实现是否符合要求

请参阅下面的示例测试用例,以了解练习与测试用例的常见结构之间的相似之处。

%%run_pytest[clean]

# Mention this at the top of cells which contain test(s)

# This is only required for running pytest in Jupyter notebooks

# This would be in your test_implementation.py

def test_sum_of_three_numbers():

# 1. Setup the variables used in the test

num1 = 2

num2 = 3

num3 = 5

# 2. Call the functionality you want to test

result = sum_of_three_numbers(num1, num2, num3)

# 3. Verify that the outcome is expected

assert result == 10

现在继续更改该行assert result == 10,使断言无法看到失败测试的输出。

PS:Pytest有一个很重要的功能叫做Fixture:fixture是pytest特有的功能,它用pytest.fixture标识,定义在函数前面。在你编写测试函数的时候,你可以将此函数名称做为传入参数,pytest将会以依赖注入方式,将该函数的返回值作为测试函数的传入参数。

参考文献:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用pytestPython接口进行自动化测试时,你可以按照以下步骤进行操作: 1. 安装pytest:在命令行运行`pip install pytest`来安装pytest库。 2. 创建测试文件:在项目目录下创建一个以`test_`开头或者以`_test`结尾的Python文件,例如`test_api.py`。 3. 导入必要的库和模块:在测试文件的开头部分,导入需要使用的库和模块,例如requests库用于发送HTTP请求。 4. 编写测试用例:使用pytest提供的装饰器(如`@pytest.mark.parametrize`)和断言方法(如`assert`)编写测试用例。每个测试用例应该是一个以`test_`开头的函数,并且可以包含多个断言。 5. 运行测试:在命令行进入项目目录并运行`pytest`命令,pytest将自动搜索并执行测试文件测试用例。 以下是一个简单的示例: ```python import pytest import requests @pytest.mark.parametrize("url", [ "https://api.example.com/users", "https://api.example.com/posts" ]) def test_api(url): response = requests.get(url) assert response.status_code == 200 assert response.json()["success"] == True ``` 在上述示例,我们使用pytest的参数化装饰器来定义了两个测试用例,分别测试了不同的API接口。每个测试用例发送一个GET请求,并断言响应的状态码和返回的JSON数据。 运行`pytest`命令后,pytest将自动搜索项目目录下的所有测试文件,并执行其测试用例。你可以通过命令行输出或者生成的测试报告来查看测试结果。 这只是一个简单的示例,pytest还提供了许多其他功能和扩展,如夹具(fixtures)、插件(plugins)等,可以根据实际情况进行更加复杂和全面的测试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值