随笔分类 - pytest测试框架
包含但不限于pytest测试框架相关的学习与理解
摘要:assert断言实现原理解析 前言 ①断言声明是用于程序调试的一个便捷方式。 ②断言可以看做是一个 debug 工具,Python 的实现也符合这个设计哲学。 ③在 Python 中 assert 语句的执行是依赖于 __debug__ 这个内置变量的,其默认值为True。且当__debug__为T
阅读全文
摘要:前言 pytest测试框架的扩展能力 如果我们需要给pytest增加额外的扩展能力,那么有三种方式。 ①钩子函数 ②用例装饰器 ③命令行参数 ④编写pytest第三方扩展插件 实战 开发pytest-hello插件 1、新建 pytest_hello 文件,代码如下: # -*- encoding:
阅读全文
摘要:pytest的整个测试分成如下六个阶段: 1、 pytest_configure pytest插件和conftest.py文件配置初始化等,创建测试session会话。 2、 pytest_sessionstart 创建session完以后,执行collection收集测试用例之前的阶段。会调用 p
阅读全文
摘要:前言 ①使用 @pytest.mark.标签名 装饰器可以将测试用例分类。 ②pytest测试框架中的内置mark标签: @pytest.mark.skip() 跳过用例 @pytest.mark.skipif() 满足条件跳过用例 @pytest.mark.parametrize() 实现参数化
阅读全文
摘要:参考:pytest动态添加自定义命令行参数并通过request.config内置fixture函数获取该参数对应的参数值到程序中(pytest_addoption钩子函数添加自定义参数到pytest配置对象中+request.config.getoption获取参数值) 代码如下: conftest
阅读全文
摘要:前言 ①当我们的自动化代码完成之后,通常期望可以在不同的环境进行测试,此时可以将项目系统的URL单独拿出来,并且可以通过pytest.ini配置文件和支持pytest命令行方式执行。 ② pytest-base-url 是一个简单的pytest插件,它通过命令行或配置文件提供可选的基本 URL。 ③
阅读全文
摘要:一、什么是Flaky Tests? ①Flaky Tests作为一个软件工程术语,目前还缺乏适当的中文翻译。“Flaky”这个单词在英文中的意思是“薄而易剥落的”。倘若据此来解释Flaky Tests,显然会让人觉得云里雾里。 ②所谓Flaky Tests,就是指在被测对象和测试条件都不变的情况下,
阅读全文
摘要:前言 由于我们在编写测试用例的过程中,可能会调试某些某些测试方法以达到我们的目的;例如调试token是否通过fixture函数写入配置文件达到token持久化存储的目的。 可能出现的问题: ①在合并代码的时候,由于我们的疏忽可能会导致将这些调试脚本也一并上传至git远程代码仓,导致git仓库出现与项
阅读全文
摘要:①当我们正常运行测试用例并生成allure测试报告的时候,会将测试方法中生成的log日志或者捕获控制台上的print输出等等添加到allure测试报告的测试步骤中。 【注意】默认的效果是自动捕获控制台上的log日志或者print输出添加至allure测试报告的Test Body中 ②我们在pytes
阅读全文
摘要:前言 保存工作中常用的日志一般来说有两种方式。 ①pytest测试框架有自己的日志管理开关。(如果开启pytest测试框架的日志功能,则pytest命令行方式运行测试用例时,在Terminal终端同样会打印日志信息。) 【注意】同时满足①开启pytest测试框架的日志功能②使用python的日志库两
阅读全文
摘要:定制化后的allure测试报告效果展示 如何定制化输出锦上添花的allure测试报告 使用前,先导入allure模块。 import allure 使用前,先熟悉运行测试用例的有关allure的命令行参数 --allure-severities=SEVERITIES_SET --allure-epi
阅读全文
摘要:前提 一般来说,在pytest.in配置文件i中不能出现和使用任何中文符号;例如: 否则会报错:UnicodeDecodeError: 'gbk' codec can't decode 解决方法 点击倒数第二行的报错,进入 iniconfig 模块,找到其前面一行代码的 open() 函数,在 op
阅读全文
摘要:pytest执行的顺序【收集测试用例、运行fixture函数、运行测试用例】 1、首先,pytest测试用例在执行之前,首先先收集测试套件中所有的测试用例。【对于参数化的测试用例(即使用了parametrize装饰器的用例),其实在测试收集阶段已经自动准备好了这些用例】 可以参考【pytest修改测
阅读全文
摘要:运行一个简单的用例: #cd code/ch1/test_one.py def test_passing(): assert (1, 2, 3) == (1, 2, 3) 运行结果及说明: 测试运行可能出现的结果总结: 举例: import pytest #测试通过 def test_passing
阅读全文
摘要:前言 pytest 运行用例的时候,一般用命令行去执行,可能是之前深受 unittest 框架的影响,习惯在项目的根目录下写一个 run_all.py 的文件。【使用pytest测试框架一般使用pytest.ini主文件指定运行测试用例;详细查看:https://www.cnblogs.com/hl
阅读全文
摘要:前言 TestSuite一直是unittest的灵活与精髓之处,在繁多的测试用例中,可以任意挑选和组合各种用例集,比如smoke用例集、level1用例集、webtest用例集、bug回归用例集等等,当然这些TestSuite需要我们提前定义好,并把用例加载进去。 Pytest采取的是完全不同的用例
阅读全文
摘要:--setup-show查看fixture的执行过程 前言 使用命令行运行 pytest 用例的时候,看不到 fixture 的执行过程。如果我们想知道fixture的执行过程和先后顺序,可以加上 --setup-show 命令行参数,帮助查看 fixture 的执行过程。 --setup-show
阅读全文
摘要:前言 1、pytest 运行全部用例的时候,在控制台会先显示用例的运行结果(.或F);等待用例全部运行完成后最后把报错信息全部一起抛出到控制台。 2、这样我们每次都需要等用例运行结束,才知道为什么报错,不方便实时查看报错信息。 3、 pytest-instafail 插件可以在运行用例的时候,可以实
阅读全文