自动化框架pytest基础

框架介绍

pytest是当前支持python的接口自动化的主流框架之一,它提供了丰富的功能和灵活的用法,使得编写和运行测试用例变得简单而高效。

  • 语法风格: 函数式/面向对象(无需样板代码)

  • 断言方式: 原生 assert 表达式

  • 参数化支持: 内置 @pytest.mark.parametrize

  • 测试报告: 支持多格式报告

  • 适用场景: 复杂项目、高扩展性需求

安装

复制代码
# 安装 pytest8.3.2 要求 python 版本在3.8及以上。
pip install pytest==8.3.2

我们运行以下代码,就能发现不一样的地方

复制代码
import requests

def test():
    r = requests.get("https://www.baidu.com")  # 对百度链接发起请求
    print(r)
    print(r.status_code)  # 状态码

if __name__== "__main__":
    test()

而从代码中可以看到,我们不需要写main函数,就可以直接运行

运行

用例运行规则

如果满足以下条件,就可以直接通过命令行参数pytest直接运行符合条件的用例

  • 文件名必须以test_开头或者_test结尾

  • 测试类必须以Test开头,并且不能有__init__方法

  • 测试方法必须以test开头

命令参数

|---------------------------|---------------------|
| 命令 | 解释 |
| pytest | 在当前目录及其子目录中搜索并运行测试。 |
| pytest -v | 增加输出的详细程度。 |
| pytest -s | 显示测试中的 print 语句。 |
| pytest test_01.py | 运行指定的测试模块。 |
| pytest test_dir/ | 运行指定目录下的所有测试。 |
| pytest -k <keyword> | 只运行测试名包含指定关键字的测试。 |
| pytest -m <marker | 只运行标记为指定标记的测试。 |
| pytest -q | 减少输出的详细程度。 |
| pytest --html=report.html | 生成 HTML 格式的测试报告。 |
| pytest --cov | 测量测试覆盖率 |

例子:

复制代码
# 详细打印,并输出print内容
pytest -s
复制代码
# 指定文件
pytest .\test_01.py
复制代码
# 指定测试用例: 文件名::类名::方法名
pytest .\test_01.py::Test::test

如果我们需要指定文件的时候,命令就会很长,同时每次运行的时候都需要手动输入命令,那这样为了更加的方便,我们就会修改pytest的配置文件

pytest配置文件

通常这个文件在项目的根目录下,通过在文件中定义配置项,可以覆盖 pytest 的默认行为,用来满足项目的需求.

在当前向项目下创建 pytest.ini 文件.这个文件就是pytest的配置文件:

|------------------|--------------------------|
| 参数 | 解释 |
| addopts | 指定在命令行中默认包含的选项。 |
| testpaths | 指定搜索测试的目录。 |
| python_files | 指定发现测试模块时使用的文件匹配模式。 |
| python_classes | 指定发现测试类时使用的类名前缀或模式。 |
| python_functions | 指定发现测试函数和方法时使用的函数名前缀或模式。 |
| norecursedirs | 指定在搜索测试时应该避免递归进入的目录模式。 |
| markers | 定义测试标记,用于标记测试用例。 |

例子:

详细输出对应包下文件名为 test_ 开头且方法名为 Test 开头的所有用例

复制代码
[pytest]
addopts = -vs --alluredir allure-results --clean-alluredir
testpaths = ./test_module
; python_files = test_.py
; python_classes = Test*
; python_functions = test*

再次进行运行

如果运行时出现了以下问题,是因为没有对应的模块,我们需要先进行下载,才能正常使用对应的命令

复制代码
# 安装 allure-pytest 插件
pip install allure-pytest
相关推荐
生而为虫1 小时前
[Windows] 【浏览器自动化精灵V1.0】用Excel表格控制浏览器的自动化
运维·自动化
我的xiaodoujiao1 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 46--撰写 README项目说明文档文件
python·学习·测试工具·pytest
淡忘_cx2 小时前
使用Jenkins自动化部署vue项目(2.528.2版本)
vue.js·自动化·jenkins
风指引着方向2 小时前
昇腾 AI 开发生产力工具:CANN CLI 的高级使用与自动化脚本编写
运维·人工智能·自动化
掌心向暖RPA自动化2 小时前
影刀RPA如何在网页和桌面软件中实现自动滚动长截图?最好同时支持横向滚动纵向滚动的?
经验分享·自动化·影刀rpa·长截图
淡忘_cx2 小时前
使用Jenkins自动化部署spring-java项目+宝塔重启项目命令(2.528.2版本)
java·自动化·jenkins
种时光的人3 小时前
CANN生态自动调优:cann-auto-tune 让AIGC大模型性能优化自动化、极致化
性能优化·自动化·aigc
我的xiaodoujiao3 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 47--设置Selenium以无头模式运行代码
python·学习·selenium·测试工具·pytest
聆风吟º17 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~17 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化