【测试开发工程师场】—— pytest.main():Python 测试框架的核心功能解析

Pytest测试框架系列 - pytest.main()运行测试用例详解 前言 我们在看见每个项目都有个入口文件,用来启动项目,但是在我们的自动化项目里面,特别是前面使用过unittest框架的人来说特别熟悉,在项目新建一个 main.py 或者 run_all.py文件,使用python main.py 或者python run_all.py 执行测试。 在pytest框架也有一个入口,那就是 pytest.main(),可以作为用例执行入口,下面我们对pytest.main()进行讲解。 pytest.main() pytest.main() 源码 def main( 阅读详情

前言

笔者平常运行pytest用例时,通常使用命令行方式,像这样

pytest -v pxl/test_dir/test_demo.py::TestDemo::test_my_var,执行某一条case,但每次命令行敲也挺麻烦的。那如何在python代码中调用pytest呢?带着疑问一起看。

解答疑问

在main()函数中调用pytest.main()就可以啦。

我们深入探讨一下 pytest.main 的用法和一些常见的应用场景。

什么是pytest.main?

pytest.main 是 Pytest 框架中一个非常实用的函数,它用于从命令行运行测试集或者以编程方式运行测试。通过调用 pytest.main() 函数,我们可以在代码中启动测试过程,并获取测试结果或者进行进一步的操作。

如何使用 pytest.main 运行测试用例?

我们看一个简单示例:

test_demo.py

import pytest
​
def test_add():
    assert 1 + 1 == 2
​
if __name__ == "__main__":
    pytest.main([__file__])

在这个示例中,我们定义了一个简单的测试用例 test_add,用于检查加法运算的正确性。然后,我们通过 pytest.main([__file__]) 来执行当前文件中的测试用例。

要运行这个测试用例,只需在命令行中执行以下命令:

python test_demo.py

Pytest 将会自动发现并执行 test_add 测试用例,并生成测试结果报告。

源码定义

def main(
    args: Optional[Union[List[str], "os.PathLike[str]"]] = None,
    plugins: Optional[Sequence[Union[str, _PluggyPlugin]]] = None,
) -> Union[int, ExitCode]:
    """Perform an in-process test run.
​
    :param args: List of command line arguments.
    :param plugins: List of plugin objects to be auto-registered during initialization.
​
    :returns: An exit code.
    """

可以看到有两个参数,args 传一个list对象,list 里面是多个命令行的参数;plugins 传一个l

【python篇】pytest框架(图文详解) pytest是纯python编写的自动化测试框架,可以支持python语法编写测试用例,是一个非常成熟的全功能的Python测试框架。简单灵活,容易上手;支持参数化;能够支持简单的单元测试和复杂的功能测试,还可以结合selenium、requests做自动化测试;pytest具有很多第三方插件,并且可以自定义扩展。 阅读详情

相关推荐

Cursor AI在测试开发中的应用:从自动化脚本到智能测试伙伴

自动化测试是现代软件开发中的重要环节,它通过脚本和工具模拟用户操作,验证软件功能是否符合预期。其核心原理是利用编程语言和测试框架构建可重复执行的验证流程,从而提升测试效率和覆盖率。在技术价值层面,自动化测试不仅减少了人工测试成本,还能在持续集成环境中快速反馈质量问题。随着AI技术的发展,测试自动化正从传统的脚本编写向智能测试伙伴演进,其中测试用例生成和自动化脚本编写等环节得到了显著优化。在实际应用场景中,AI编程助手能够理解测试需求,分析代码结构,生成完整的测试解决方案,这自然引出了Cursor这类工具在测

weixin_33695450的博客 403

Postman与Python环境配置:接口测试从手动调试到自动化实战

在软件开发和测试领域,接口测试是验证系统间数据交互正确性的关键技术。其核心原理是通过模拟客户端请求,验证服务端响应的状态码、数据结构与业务逻辑是否符合预期。掌握接口测试能显著提升开发效率,确保API的可靠性与稳定性,广泛应用于前后端联调、微服务集成和自动化测试等场景。对于初学者而言,搭建一个高效的本地测试环境是首要任务。Postman作为图形化接口调试工具,提供了直观的请求构建与响应查看功能,而Python凭借其简洁语法和强大的requests库,成为实现接口测试自动化的首选。本文将聚焦于Postman和P

weixin_33816300的博客 502

基于大语言模型的测试用例自动生成:从自然语言需求到结构化用例的实践指南

在软件测试领域,测试用例设计是连接需求与验证的关键环节,其核心在于将非结构化的自然语言需求转化为可执行、可验证的结构化测试场景。传统方法高度依赖人工经验,效率与一致性面临挑战。随着自然语言处理(NLP)与人工智能技术的发展,大语言模型(LLM)凭借其强大的语义理解与逻辑推理能力,为自动化测试设计提供了新的解决方案。其技术价值在于,能够将测试工程师从繁琐的文档翻译与格式化工中解放出来,聚焦于更高阶的测试策略与复杂场景探索。在应用场景上,该技术尤其适用于需求频繁变更、业务逻辑复杂的敏捷开发与持续交付环境,能够快

cqwmy840702的博客 286

AI大模型赋能软件测试:从零到一的完整学习路线与实战指南

别再瞎点AI测试教程了!这套保姆级学习路线:从0到1吃透全热门AI大模型赋能软件测试 最近在技术社区和招聘网站上,一个趋势越来越明显:AI大模型正在重塑软件测试的边界。无论是自动化脚本生成、测试用例设计,还是缺陷预测和智能分析,AI都展现出了巨大的潜力。然而,很多测试同学在尝试学习时,往往陷入困境:网上资料零散不成体系,要么是零碎的Prompt技巧,要么是高大上的概念解读,缺乏一条从入门到精通的清晰路径。本文旨在解决这个问题,为你梳理一套从零基础入门到技术深度提升的完整学习路线,覆盖主流AI大模型(如GPT

weixin_33798152的博客 464

Pytest教程:详解pytest.main()

pytest.main() 是 Pytest 测试框架中的一个函数,用于动态地运行测试。通过调用这个函数,可以在代码中以编程方式执行 Pytest 测试集而不是通过命令行。

旦莫的博客 2370

大厂Python自动化测试面试题合集

题目:函数的作用是什么?调用函数的语法?答案:将独立功能代码封装成模块,复用代码;函数名(实参)。题目:函数 return 作用是什么?无 return 时函数返回什么?多返回值底层是什么类型?答案:返回函数执行结果;无 return 默认返回 None;return x,y,z 底层自动封装为元组。题目:函数四大参数类型分别是什么?定义顺序要求?答案:必选参数、默认参数、可变位置 * args、命名关键字、可变关键字 **kwargs;顺序:必选→默认→*args→命名关键字→**kwargs。

悦分享 104

【Pandas总结】第二节 Pandas 的数据读取_pd.read_csv()的使用详解(非常全面,推荐收藏)

pandas对纯文本的读取提供了非常强力的支持,参数有四五十个。这些参数中,有的很容易被忽略,但是在实际工作中却用处很大。

weixin_47139649的博客 11万+

TX 的 LOL(Local Oscillator Leakage,本振泄露)

项目内容LOL 是什么本振残留在 TX 输出中心频率上的杂散主要原因IQ 失衡、硬件不完美、零中频架构影响杂散、干扰、性能劣化、安全问题解决方法初始化校准 + 跟踪校准(AD9371 支持)检测手段频谱仪、回环检测、ADC ILA 抓取。

weixin_41230430的博客 2046

QT实现Word读写

在windows环境下,我们可以通过ActiveQt实现Office自动化,相当于VB的VBA功能。 以下是一个实例: #include #include #include int main(int argc, char *argv[]) {     QApplication a(argc, argv);     //显示的打开一个word应用程序     QAxW

nameofhsw的专栏 1万+

从Gitee上部署视觉工程到Linux虚拟机

(使用SVM来识别装甲板的编号,此处手机上的图片中只有灯条没有数字,SVM无法识别出编号。这两行代码的意义是,当SVM识别不出或者识别不到编号时,把装甲板的编号默认为2号。找到自瞄程序中,数字识别类下的这两行代码,把注释去掉。这样,每次打开新的终端时,环境变量都会自动设置。(2)查看虚拟机设置选项,检查虚拟机USB接口是否为3.0及以上的接口。如果不是,要更改好。这样,每次打开新的终端时,环境变量都会自动设置。后,每次打开终端时自动设置这些环境变量,你可以将。打开第一个终端,用来挂ROS的内核启动页面。

2301_81035291的博客 1520

企业级智能问数开发的核心痛点与技术聚焦

本文介绍了企业级智能问数系统开发的三大核心问题和解决方案:语义解析不精准、SQL生成不健壮、企业适配难落地。文章从开发者视角出发,详细拆解了NLU语义解析、SQL生成、对话记忆、企业级适配四大核心模块的技术实现。 在技术选型方面,推荐了LangChain+DeepSeek-R1、FAISS/Milvus、SQLAlchemy等工具链组合。针对企业级需求,重点讲解了: 语义解析模块的意图识别优化和要素提取技术 SQL生成模块的语法校验与性能优化方案 对话记忆模块的Redis存储实现 企业级适配的三层防护体系和

lamehsl的专栏 1047

保姆级教程:在RK3576上配置USB网卡从零到外网访问(附udev规则详解)

本文提供了在RK3576开发板上配置USB网卡的完整教程,涵盖从内核驱动、udev规则到网络路由的全流程。重点讲解了如何利用USB Gadget功能实现高速网络连接,并构建稳定的算力集群,确保多设备间通信及外网访问。

grass的博客 458

ESP32-BLE学习1-建立简单的server

start 学习之前,我想尝试使用ESP32的demo建立一个简单的server与手机接进行最基本的数据通信。 这里有BLE的简单讲解BLE资料 因为BLE的连接是具有主从机特性的,就像SPI,USB一些请求只能由主机端发起,连接也需要主机端发起。所以手机要想连上ESP32,就得将ESP32设置为从机模式。 从资料上可以看到,从机端通过Notify通知主机,所以从机就是GATT Server。 在进行ESP32 的demo学习之前,得大体看下ESP32的蓝牙组成,ESP32支持经典蓝牙和低功耗蓝牙4.2,

Spark的博客 1842

uniapp [全端兼容] - 详细实现用户电子签名 “逐字校验“ 将姓名按字拆开分别手写签署签字,把客户名字自动拆成单独的文字并由用户逐个依次签名与汉字笔画校验,支持汉字格、田字格、米字格、方格等!

uniapp,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,手写签名,电子签署,逐个字挨着写,写名字,将客户姓名分成单独的文字并依次手写,在田字格里写名字,米字格,方格,合同,书写轨迹,验证手写的文字是否正确,如何在uni-app做姓名拆分成独立的文字后手写每一个字,校验正确性,画板,汉字生成在米字格里并且让用户去写,如何画一个汉字田字格,vue把姓名拆分单独写签名,文字,拆掉,中文汉字网格,一个字一个字签名,一次只签名一个文字,判断签名的文字笔画是否正确,Un

🏆 前端领域优质创作者 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 年薪30万已是白菜价?——国内互联网大厂月薪总结
下一篇: 【python实战篇】——用request库打造自己的翻译接口
田野猫咪
博客等级 码龄4年 5080粉丝 502原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值