百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

自动化测试之Pytest框架入门(pytest自动化框架目录)

ccwgpt 2024-11-02 11:02 41 浏览 0 评论


Pytest 框架可以用来做 系统测试 的自动化, 它的特点有

  • 用 Python 编写测试用例,简便易用
  • 可以用 文件系统目录层次 对应 手工测试用例 层次结构
  • 灵活的 初始化清除 机制
  • 可以灵活挑选测试用例执行
  • 利用第三方插件,可以生成不错的报表

----------------------------------------------------------------------------------------------

安装

pip install pytest

我们还需要产生测试报表,所以要安装一个第三方插件 pytest-html ,执行如下命令安装

pip install pytest-html

-----------------------------------------------------------------------------------------

快速上手

pytest 如何知道你哪些代码是自动化的测试用例?

官方文档 给出了 pytest 寻找 测试项 的 具体规则

  • 如果未指定命令行参数,则从 testpath(如果已配置)或当前目录开始收集。如果命令行参数, 指定了 目录、文件名 或 node id 的任何组合,则按参数来找
  • 寻找过程会递归到目录中,除非它们匹配上 norecursedirs。
  • 在这些目录中,搜索由其测试包名称导入的 test_*.py 或 *_test.py 文件。
  • 从这些文件中,收集如下测试项:test为前缀 的 函数Test为前缀的 类 里面的 test为前缀的方法

-----------------------------------------------------------------------------------------

测试用例代码

首先,我们编写的测试用例代码文件, 必须以 test_ 开头,或者以 _test 结尾

比如,我们创建一个 文件名为 test_错误登录.py ,放在目录 autotest\cases\登录 下面。

其中 autotest 是 我们创建的 自动化项目根目录

class Test_错误密码:

    def test_C001001(self):
        print('\n用例C001001')
        assert 1 == 1
        
    def test_C001002(self):
        print('\n用例C001002')
        assert 2 == 2
        
    def test_C001003(self):
        print('\n用例C001003')
        assert 3 == 2

如果我们把测试用例存放在类中, 类名必须以 Test 为前缀的 类 ,用例对应的方法必须以 test 为前缀的方法。
pytest 中用例的检查点 直接用 Python 的 assert 断言。

assert 后面的表达式结果 为 True ,就是 检查点 通过,结果为False ,就是检查点 不通过。

运行测试

执行测试非常简单,打开命令行窗口,进入自动化项目根目录(我们这里就是 autotest),执行命令程序 pytest 即可

显示找到3个测试项,2个执行通过,1个不通过。

通过的用例 是用一个绿色小点表示, 不通过的用例用一个红色的F表示

并且会在后面显示具体不通过的用例 和不通过的检查点 代码细节。


大家可以发现,用例代码中有些打印语句没有显示出内容。

因为pytest 会 截获print打印的内容。

如果我们希望 显示测试代码中print的内容,因为这些打印语句在调试代码时很有用,可以加上命令行参数 -s

如下

pytest -s

如果我们希望得到更详细的执行信息,包括每个测试类、测试函数的名字,可以加上参数 -v,这个参数可以和 -s 合并为 -sv

如下

pytest -sv

执行 pytest 时, 如果命令行没有指定目标目录 或者 文件, 它会自动搜索当前目录下所有符合条件的文件、类、函数。

所以上面,就找到了3个测试方法,对应3个用例。

我们目前 项目根目录 中 只有一个cases 目录用例存放测试用例, 将来还会有其他目录,比如:

lib目录存放库代码、cfg目录存放配置数据 等等。

为了防止 pytest 到其他目录中找测试用例项,执行测试时,我们可以在命令行加上目标目录 cases ,就是这样

pytest cases

--------------------------------------------------------------------------------------------------------------

产生报告

前面在安装pytest,我们也安装了 pytest-html 插件,这个插件就是用来产生测试报告的。

要产生报告,在命令行加上 参数 --html=report.html --self-contained-html ,如下

pytest cases --html=report.html --self-contained-html

这样就会产生名为 report.html 的测试报告文件,可以在浏览器中打开

但是这个工具有个bug,导致测试目录、文件、类名 中,如果有中文,显示为乱码

可以这样修复:

  • 打开该插件对应的代码文件,通常在解释器目录下:site-packages\pytest_html\plugin.py
  • 找到如下代码 class TestResult: def __init__(self, outcome, report, logfile, config): self.test_id = report.nodeid.encode("utf-8").decode("unicode_escape") 改为 class TestResult: def __init__(self, outcome, report, logfile, config): # 白月黑羽修改方法,解决乱码问题 # self.test_id = report.nodeid.encode("utf-8").decode("unicode_escape") self.test_id = report.nodeid

然后再次运行,就可以发现中文乱码问题已经解决了。

相关推荐

用Deepseek扩写土木工程毕业论文实操指南

用Deepseek扩写毕业论文实操指南一、前期准备整理现有论文初稿/提纲列清楚论文核心框架(背景、现状、意义、方法、数据、结论等)梳理好关键文献,明确核心技术路线二、Deepseek扩写核心思路...

985学霸亲授,DeepSeek也能绘6大科研图表,5分钟就出图

在实验数据处理中,高效可视化是每个科研人的必修课。传统绘图软件操作复杂、耗时费力,而智能工具DeepSeek的出现彻底改变了这一现状。本文将详解如何用DeepSeek一键生成六大科研常用图表,从思维导...

AI写论文刷屏?大学生正在丢掉的思考力

一、宿舍深夜:当论文变成"Ctrl+C+V"凌晨两点的大学宿舍,小王对着电脑屏幕叹气。本该三天前开始写的近代史论文,此刻还一片空白。他熟练打开某AI写作网站,输入"论五四运动的...

Grok在辅助论文写作上能不能既“聪明”又“可怕”?!

AcademicIdeas-学境思源AI初稿写作随着人工智能技术的飞速发展,论文写作这一学术任务正迎来新的助力。2025年2月18日,美国xAI公司推出了备受瞩目的Grok3模型,其创始人埃隆·...

大四论文沟通场景!音频转文字难题听脑AI来化解

大四学生都知道,写论文时和导师沟通修改意见,简直是“过关斩将”。电话、语音沟通完,想把导师说的修改方向、重点要求记下来,麻烦事儿可不少。手写记不全,用普通录音转文字工具,转完还得自己慢慢找重点,稍不注...

论文写作 | 技术路线图怎么画?(提供经典优秀模板参考)

技术路线图是一种图表或文字说明,用于描述研究目标、方法和实施计划。它展示了研究的整体框架和步骤,有助于读者理解研究的逻辑和进展。在课题及论文中,技术路线图是常见的一部分,甚至是一个类似心脏一样的中枢器...

25年信息系统项目管理师考试第2批论文题目写作建议思路框架

25年信息系统项目管理师考试第2批论文题目写作建议思路框架--马军老师

微信购物应尽快纳入法律框架(微信购物管辖)

符向军近日,甘肃省工商行政管理局发布《2016年上半年信息分析报告》。报告显示,微信网购纠纷迅猛增长,网络购物投诉呈上升趋势。投诉的主要问题有出售的商品质量不过关、消费者通过微信付款后对方不发货、购买...

泛珠三角区域网络媒体与腾讯微信签署《战略合作框架协议》

新海南客户端、南海网7月14日消息(记者任桐)7月14日上午,参加第四届泛珠三角区域合作网络媒体论坛的区域网络媒体负责人及嘉宾一行到腾讯微信总部座谈交流,并签署《战略合作框架协议》(以下简称《框架协...

离线使用、植入微信-看乐心Mambo手环如何打破框架

从2014年开始智能手环就成功进入人们的生活,至今已经演变出数据监测、信息推送、心率监测等诸多五花八门的功能,人们选择智能手环并不指望其能够改变身体健康情况,更多的是通过数据来正视自身运动情况和身体健...

微信私域电商运营策略与框架(微信私域怎么做)

...

华专网络:如何零基础制作一个网站出来?

#如何零基础制作一个网站出来?#你是不是觉得网站建设很复杂,觉得自己是小白,需求不明确、流程搞不懂、怕被外包公司坑……这些问题我都懂!今天华专网络就用大白话给你捋清楚建站的全流程,让你轻松get网站制...

WAIC2024丨明日上午9点,不见不散!共同探讨智能社会与全球治理框架

大咖云集,硕果闪耀WAIC2024世界人工智能大会智能社会论坛将于7月5日9:00-12:00与你相约直播间WAIC2024上海杨浦同济大学哔哩哔哩多平台同步直播探讨智能社会与全球治理框架WAIC...

约基奇:森林狼换来戈贝尔时大家都在嘲笑 他们的阵容框架很不错

直播吧5月4日讯西部季后赛半决赛,掘金将迎战森林狼,约基奇赛前接受采访。约基奇说道:“当蒂姆-康纳利(森林狼总经理、前掘金总经理&曾选中约基奇)做了那笔交易(换来戈贝尔)时,每个人都在嘲笑他...

视频号带货为什么一个流量都没有?顶级分析框架送给你

视频号带货为什么一个流量都没有?遇到问题,一定是步步来分析内容,视频号带货一个流量都没有,用另外一个意思来讲,就可以说是零播放。为什么视频号带货一个流量都没有?跟你说再多,都不如来个分析框架。1、是否...

取消回复欢迎 发表评论: