超详细的 pytest 教程【入门篇】

Bet体育365验证提款 2026-06-15 14:29:19 admin

首页 题库 公司真题 专项练习 面试题库 在线编程 面试 面试经验 AI 模拟面试 简历 求职 学习 基础学习课 实战项目课 求职辅导课 专栏&文章 竞赛 搜索

我要招人

发布职位

发布职位、邀约牛人

更多企业解决方案

AI面试、笔试、校招、雇品

HR免费试用AI面试

最新面试提效必备

登录

/

注册

牛客973033437号 2022-05-09 20:35 华东师范大学 自动化测试 关注 已关注 取消关注 超详细的 pytest 教程【入门篇】 前言 关于自动化测试,这些年经历了太多的坑,有被动的坑,也有自己主动挖的坑,在这里做了一些总结。 主要思考总结下这些年来自动化测试过程中的一些基本的东西,例如何时进行自动化、如何自动化、或是怎么自动化我们的测试工作,接下来我们先对pytest展开一些讲解。 pytest到目前为止还没有翻译得比较好全面地使用文档,很多英文不太好的小伙伴,在学习时看英文文档还是很吃力。本来去年就计划写pytest详细地使用文档的,由于时间关系一直搁置,直到今天才开始写。本文是第一篇,主要介绍pytest的入门使用,后续会分篇针对pytest中的各个功能出详细的使用教程。 一、环境安装 pytest 是 python 中的第三方库,使用之前需要先安装,在命令行中运行以下安装命令 :

pip insatll pytest

检查安装是否成功以及安装的版本,命令行命令如下:

pytest --version

执行上述命令,能够输出版本信息,那就说明安装成功啦。 二、用例编写 当我们通过 pytest 执行用例时,pytest 会自动递归遍历执行路径下所有的目录,根据 pytest 中默认用例的识别的规则,自动收集测试用例。所有在使用 pytest 编写测试用例之前,我们首先需要了解一下 pytest 收集用例时默认的用例识别规则。 1、默认的用例识别的规则 1、用例文件:所有文件名为 开头 或者 开头的文件会被识别为用例文件。test__test 2:用例类,测试文件中没有每个 Test 开头的类型就是一个测试用例类。 3、测试用例:测试类中每个 test 开头的方法就是一条测试用例,测试文件中每个 test 开头的函数也是一条测试用例, 备注:上述默认的用例查找规则,可在 pytest 的配置文件进行修改(后续章节会详细介绍配置文件的使用) 另外 pytest 兼容 unittest,以 unittest 的用例编写规范写的用例,pytest 都能够识别出来 通过了解上述 pytest 中用例识别的规则,可以知道 pytest 用例编写,能使用函数的形式,也能使用类的形式,那么接下来就分别给大家介绍一下这两种方式编写用例。 2、函数形式编写用例 规则:用例方法名以 test 开头即可

# \testcases\test_demo1.py

def test_demo():

assert 100 == 100

使用命令 就可以执行测试函数,输出结果如下:pytest

C:\testcases>pytest

======================test session starts ======================

platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0

rootdir: C:\testcases

plugins: testreport-1.1.2

collected 1 item

test_demo1.py . [100%]

====================== 1 passed in 0.26s ======================

3、以类的形式编写用例 规则: 测试类命名以 Test 开头,用例方法以 test 开头

# test_demo2.py

class TestDome:

def test_demo1(self):

assert 11 == 11

def test_demo(self):

assert 22 == 21

命令 运行上述用例,结果如下:pytest

====================== test session starts ======================

platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0

rootdir: C:\testcases

plugins: testreport-1.1.2

collected 2 items

test_demo1.py .F [100%]

====================== FAILURES ======================

___________ TestDome.test_demo ____________

self =

def test_demo(self):

> assert 22 == 21

E assert 22 == 21

test_demo1.py:25: AssertionError

====================== short test summary info =======================

FAILED test_demo1.py::TestDome::test_demo - assert 22 == 21

====================== 1 failed, 1 passed in 0.53s ======================

上面的运行结果可以看出来,一条用例执行通过,一条执行失败 三、执行测试 在上面我们使用的是 pytest 这个命令去执行测试用例。关于 pytest 执行测试,有两种方式,一种是命令行通过 pytest 这个命令执行,另外在代码中也可以通过 这个方法来执行测试。接下来就和大家详细地介绍一下 pytest 执行测试的方式和常用的参数pytest.main() 1、执行参数 测试用例

# 测试用例

class TestDome:

def test_demo1(self):

print('----测试用例执行-----------')

assert 11 == 11

参数 : 显示测试的详细参数信息-v

C:\testcases>pytest -v

========================== test session starts ==========================

platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0

cachedir: .pytest_cache

rootdir: C:\git_project\pytest-report-me-main\testcases

plugins: testreport-1.1.2

collected 1 item test_demo1.py::TestDome::test_demo1 PASSED [100%]

========================== 1 passed in 0.27s ==========================

参数 : 显示测试执行的输出信息-s

C:\testcases>pytest -s

=========================== test session starts ===========================

platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0

rootdir: C:\testcases

plugins: testreport-1.1.2

collected 1 item

test_demo1.py::TestDome::test_demo1 ----测试用例执行---输出1--------

----测试用例执行---输出2--------

PASSED

=========================== 1 passed in 0.28s ===========================

2、pytest.main 执行的参数传递 pytest.main 方法是执行测试参数传递方式: 所以把参数放在列表中,每个参数就是列表中的一个元素

pytest.main(['-v','-s'])

详细的参数可以使用命令 查看pytest -h 3、指定执行的测试目录 命令pytest 测试目录路径

pytest testcase/

pytest 会执行指定目录路径下所有的测试用例 4、指定执行的测试文件 命令pytest 测试文件路径

pytest testcase/test_demo1.py

pytest 会执行指定测试文件中所有的测试用例 5、指定执行的测试类 命令pytest 测试文件::测试类

pytest testcase/test_demo1.py::TestClass

pytest 会执行指定测试类里面所有的测试用例 6、指定执行的测试用例 命令pytest 测试文件::测试类::测试方法

pytest testcase/test_demo1.py::TestClass::test_method

pytest 会执行指定的测试方法 基本的入门就给大家介绍到这里了 写在最后 最后再唠唠一句,如果想以测试为长期发展职业目标,是需要时刻保持学习的,要使自己具备竞争力,无论你现在工作几年,只要行动起来,你就已经占优势了,好啦就到这里了,祝大家2022年能升职加薪,拿到心仪公司的offer,事事顺遂。 这份软件测试学习资源整理起来也不容易,希望大家帮忙「点赞」「收藏」,咱不做白嫖党!! #软件测试##Python##测试##自动化工程师# 提示 订阅专刊 全部评论 推荐最新楼层 找工作ing 湖南农业大学 Java 感谢分享,欢迎继续更新 点赞 回复 分享 发布于 2022-05-13 11:02 暂无评论,快来抢首评~

相关推荐

06-08 20:54 门头沟学院 客户端开发 知乎客户端一面面经 6.4 一面  拷打项目 concurrenthashmap 底层 弱引用的底层原理 Handler内存泄漏问题 okhttp连接池是什么 怎么用的 TCP的复用怎么做的 http1.1和2.0连接复用的区别 handler的postDelay为什么切到后台就不生效了 电量和网络对app的影响有了解过吗 fragment生命周期中onCreatedView和onViewCreated的区别 如果初始化一个View在哪里(onViewCreated) 安卓启动模式的SingleTask和SingleTop的区别 使用场景 synchronized 和 volatile的区别 安卓主线程为什么不能... 查看14道真题和解析 点赞 评论 收藏 分享 06-08 19:44 已编辑 门头沟学院 C++ 抖音变现 三面挂 发出来也不奢求攒人品,随便看看。三面先问了20分钟项目算法题:求ax^3+bx^2+cx + d = 0的三个根,abcd为输入参数,确定有3个根,确定每个根之间的绝对值差大于1,要求输出3个根,并且保留两位小数(说实话这道题看得我一脸懵,这都参加工作3年多了,还能记着解法的也是神了)二面算法题:给一个数组,求数组中,对两两元素的差值的绝对值求和然后问了20分钟项目一面先问了20分钟项目算法题:N个城市,每个城市最多有M个配置,M*N很大,但是保证每个配置最多同时只有5个城市关联,实现两个接口:get(int city); 获取该城市的所有配置update(int configId, vect... 查看3道真题和解析 点赞 评论 收藏 分享 05-27 19:08 已编辑 门头沟学院 推荐算法 这操作太6了 github原来还有挂人的作用搞大模型真是能狠赚笔xxx在coding补课:一个普通的大厂前端实习,可以被包装成 AI Infra;一个并不算核心的工作内容,可以被描述成“关键项目负责人”;一个算不上核心的开源贡献,可以被渲染成项目核心 Maintainer网络上很多博主借助AI包装自己,卖课割韭菜的一堆,大家还是保持理智,有钱不如给AI wu970:来个仓库链接,开战开战 点赞 评论 收藏 分享 06-09 22:19 山东大学 嵌入式软件工程师 你选择的央国企offer,是你喜欢的吗? 前段时间的某一天,下午正上着班,突然接到电话:“我离职了,明天是我的last day…你是我在济南认识的第一个好朋友,我觉得应该跟你说一声的…跟工作没关系,我就是喜欢北京,想回去”然后才突然意识到,她也不过是一个嘴毒一点的小孩,每次她的电话都特别突然“哥我心情不好,一块整点吃的吧”“假期倒计时了,心情特别好,爱你,特别爱你”这个「爱」当然是广义上、友情的那种,我真的很佩服这份洒脱,爱憎分明,那些山东人追求的所谓稳定与体面,在她面前好像真的没那么重要北京那么大,确实更适合像她这样鲜活又自由的灵魂,那就祝她在北京继续做那个嘴毒、心热、永远赤诚的小孩吧只是已经在夏天,以后却再也没机会接到“整点吃的”... SAGIMA牛马咖啡 点赞 评论 收藏 分享 评论 点赞成功,聊一聊 >2 5 分享 评论 提到的真题

返回内容

招聘动态

查看更多

快手

27届实习超多转正机会

现代汽车

CodeFaster急速编程挑战赛

27届校招宝典

校招信息网申列表

全站热榜 更多 1 ... 面试官,抖音全是用Go实现的吗? 471 2 ... 数字马力校企合作面经 460 3 ... 二本学院女,学java还有出路吗 319 4 ... 深圳益普科技——Java实习面经 300 5 ... 27届美团/腾讯/两段字节实习结束了 212 6 ... 结束了?结束了... 190 7 ... 26届至今0 offer,还有救吗? 186 8 ... 面试题:半夜接到客户电话说要改方案,怎么办? 166 9 ... 美团25届前端被裁 166 10 ... 中台部门是不是很稳定一点 160 创作者周榜 更多 正在热议 更多 # 我的实习日记 # 4251013次浏览 33627人参与# 当下环境,你会继续卷互联网,还是看其他行业机会 # 218736次浏览 1272人参与# 实习转正进行时 # 206528次浏览 1196人参与# 你觉得什么岗位会被AI替代 # 72109次浏览 412人参与# 产品实习,你更倾向大公司or小公司 # 238706次浏览 2182人参与# 今年秋招哪家公司给的薪资最良心? # 504849次浏览 2676人参与# 找不到好工作选择GAP真的丢人吗 # 114310次浏览 1030人参与# 如果不考虑收入,你最想做什么工作? # 60258次浏览 256人参与# 春招什么时候投? # 61390次浏览 720人参与# 面试题刺客退退退 # 625388次浏览 7838人参与# 大家每天通勤多久? # 131186次浏览 1675人参与# 国企秋招,你投了吗? # 80120次浏览 437人参与# 实习最想跑路的瞬间 # 154430次浏览 813人参与# 最难的技术面是哪家公司? # 80328次浏览 1168人参与# 华为池子有多大 # 189025次浏览 966人参与# 记录实习开销 # 233099次浏览 1775人参与# 机械人选offer,最看重什么? # 192341次浏览 904人参与# 金融银行投递记录 # 41380次浏览 90人参与# 机械校招之路总结 # 133574次浏览 2129人参与# 你觉得实习只能是打杂吗? # 330627次浏览 1944人参与

刷真题、补算法、看面经、得内推

扫一扫,把题目装进口袋

移动版

关于我们 加入我们 意见反馈

企业服务

校企合作 联系我们 免责声明 友情链接 资源导航

付费咨询

扫描二维码,进入QQ群

扫描二维码,关注牛客公众号

公司地址:北京市朝阳区北苑路北美国际商务中心K1座一层-北京牛客科技有限公司

联系方式:010-60728802 投诉举报电话:010-57596212(朝阳人力社保局)

牛客科技©2026 All rights reserved

admin@nowcoder.com 京ICP备14055008号-4 增值电信业务经营许可证 营业执照 人力资源服务许可证 京公网安备 11010502036488号