电脑建设银行怎样设置网站查询密码,中山古镇做网站的公司,邯郸 平面设计,培训网络设计工程师Pytest 的下载安装
1、Python3 使用 pip install -U pytest 安装
2、查看 pytest 版本信息 pytest --version
3、pytest 用例的执行规则#xff1a;
①测试文件以 test_xx.py 命名需要以 test_开头#xff08;或_test 结尾#xff09;
②测试类以 Test_开头#xff0…Pytest 的下载安装
1、Python3 使用 pip install -U pytest 安装
2、查看 pytest 版本信息 pytest --version
3、pytest 用例的执行规则
①测试文件以 test_xx.py 命名需要以 test_开头或_test 结尾
②测试类以 Test_开头并且不能带有 init 方法
③测试函数或方法以 test_xx 开头总体上分为三个阶段
编写测试用例执行测试用例输出测试报告
第一步编写测试用例
pytest 执行时默认是执行指定路径下以test_开头或者以_test 结尾的文件里的测试类或者方法默认是执行以 Test_开头的类和 test_开头的方法
1、首先创建 py 文件命名以 test_开始或者以_test 结尾
2、若是新建类测试类需要以 Test_开头
3、测试用例方法需要以 test_开头 1.1 测试用例的优化
1.1.1 assert 断言判断执行结果是否满足预期
Pytest 最常用的断言一般有以下五种
assert xx判断 xx 为真assert not xx判断 xx 不为真assert a in b判断 b 包含 a assert a b判断 a 等于 b assert a !b判断 a 不等于 b
添加断言在对应的方法里面做判断测试用例结果是否满足预期示例如下 执行结果如下断言失败的结果会显示出来
1.1.2 断言优化
如果想要在失败的时候看到更详细的信息可以在断言上添加说明示例如下
执行结果如下图可以看到失败时断言的说明信息 同时我也为大家准备了一份软件测试视频教程含面试、接口、自动化、性能测试等就在下方需要的可以直接去观看也可以直接点击文末小卡片免费领取资料文档
软件测试视频教程观看处 2024年Python自动化测试全套保姆级教程70个项目实战3天练完永久白嫖... 第二步测试用例的执行
2.1 使用命令行执行
cmd 窗口然后执行 pytest 文件路径/测试文件名例如 pytest ./test_tt.py
如果当前路径已经是放测试用例文件的文件夹下想要测试文件则直接可以 输入pytest 测试文件名 即可 如果只输入 pytest则会默认执行当前文件夹下所有以 test_开头或_test 结尾的文件。
2.2 IDEPyChram执行
写法如截图所示pytest.main()参数以列表的形式给出如截图
执行当前文件所在路径下的文件指定文件名则执行指定的文件若没指定执行所有 test_
开头或者_test 结尾的文件。 2.3 执行指定文件指定方法
2.3.1 命令行编写方式
pytest路径/文件名::类名::方法名例如 2.3.2 pycharm 编写方式
如果是用 pycharm 写法如图与上面的命令行等价 2.4 带参数执行
常用的 pytest 带参数执行列举几种其余扩展可以自行百度
2.4.1 pytest -q简化控制台的输出
不带参数执行结果 带参数执行结果 2.4.2 Pytest -v 输出用例更加详细的执行信息比如用例所在文件和用例名称
添加参数前执行结果 添加参数后执行结果 2.4.3 pytest -k 执行用例中包含‘关键字’的用例
待执行用例如截图所示 执行代码和结果如图关键字需要用双引号 2.4.4 pytest -s 输出用例中的调试信息比如 print 打印信息如果不加参数则不输出
待执行的用例 添加参数前执行结果 添加参数后执行结果 2.4.5 pytest -m执行‘标记’的内容执行特定的测试用例执行有相同标记的测试用例添加标记的方法如下
需执行测试用例 执行代码和结果如下 执行有相同标记的用例可以用于指定需执行的测试用例。
2.4.6 pytest -x执行失败则停止执行后面的用例不会被执行
待执行用例 带参数执行结果 2.4.7 pytest --maxfailn执行失败 n 次之后停止执行n 是执行失败的次数
假设 n 2 执行上面的用例由于失败只有一次所以用例会继续执行完直到两次失败才停止执行 2.4.8 pytest --countn 执行用例 n 次n2 就是执行两次
如下执行 test_01 两次 2.4.9 pytest --lf last failed重新运行上次失败的用例若没有失败的会全部跑 2.4.10 pytest --ff failed first重新运行所有用例但首先运行上次失败的用例 2.5 优质功能介绍
2.5.1 跳过用例的执行
根据特定的条件不执行标识的测试函数. 方法
skipif(condition, reasonNone) 参数
condition跳过的条件必传参数reason标注原因必传参数
使用方法
pytest.mark.skipif(condition, reasonxxx) condition 条件为真时跳过
pytest.mark.skip()
示例如下 2.5.2 标记为预期失败的用例
标记测试函数为失败函数
方法
xfail(conditionNone, reasonNone, raisesNone, runTrue, strictFalse)
常用参数
condition预期失败的条件必传参数reason失败的原因必传参数
使用方法
pytest.mark.xfail(condition, reasonxx)condition 为真则标记失败
在某种条件不满足的时候 预期它是失败的 就将它标记为预期失败 若
condition 条件不满足则正常执行
示例
不带参数 condition 条件满足的时候 condition 条件不满足的时候 2.5.3 参数化
方法
parametrize(argnames, argvalues, indirectFalse, idsNone, scopeNone)
常用参数
argnames参数名
argvalues参数对应值类型必须为 list 当参数为一个时格式[value]
当 参 数 个 数 大 于 一 个 时 格 式 为 : [(param_value1,param_value2.....),(param_value1,param_value2 )]
使用方法:
pytest.mark.parametrize(argnames,argvalues) 参数名参数值pytest.mark.parametrize(a,[3,6])单参数pytest.mark.parametrize(a,b,[(1,2),(0,3)])多参数
参数值为 N 个测试方法就会运行 N 次
示例
单参数 多参数 2.5.4 执行标记的用例多次
首先安装 repeat
pip install pytest-repeat
pytest.mark.repeat(n)执行当前用例 n 次 然后再往下执行其他用例
示例 2.5.5 调整用例的执行顺序
使用
安 装 pip install pytest-ordering 在测试方法上加装饰器pytest.mark.last--最后一个执行
pytest.mark.run(order1)---第几个执行
示例
最后一个执行 指定执行顺序 2.5.6 自定义测试用例预置条件--pytest 精髓fixture
pytest.fixture()(scopefunction,paramsNone,autouseFalse, idsNone, nameNone)
调用时被优先执行 预处理或者重复操作scope被标记方法的作用域
function (default)作用于每个测试方法每个 test 都运行一次
class作用于整个类每个 class 的所有 test 只运行一次
module作用于整个模块每个 module 的所有 test 只运行一次
session作用于整个 session(慎用)每个 session 只运行一次
params(list 类型)提供参数数据供调用标记方法的函数使用
autouse是否自动运行,默认为 False 不运行设置为 True 自动运行
若不为 True 则需要调用才会优先执行。
2.5.6.1 fixture 用法一
定义 fixture 与定义普通函数差不多命名不要以 test 开头与用例区分开fixture 有返回值 没有返回值默认为 None。用例调用 fixture 返回值直接就是把 fixture 的函数名称当做变量名称。
示例
会优先于测试用例 test_01 执行 2.5.6.2 fixture 用法二
fixture 标记的函数可以应用于测试类外部每次都会优先执行 2.5.6.3 fixture 用法三
传参数作为标识 2.5.6.4 使用多个fixture
如果用例需要用到多个fixture 的返回数据fixture 也可以返回一个元组list或字典然后从里面取出对应数据。 也可以分成多个 fixture 在用例中传值多个 fixture 参数
2.5.6.5 fixture 作用范围
2.5.6.5.1 、function 每个方法执行之前执行一次 2.5.6.5.2 class 类执行开始时执行一次 2.5.6.5.3 module 在当前.py 脚本里面所有用例开始前只执行一次 2.5.6.5.4 session 级别是可以跨.py 模块调用的
也就是当我们有多个.py 文件的用例的时候 如果多个用例只需调用一次fixture那就可以设置为 scopesession。
2.5.6.5.5 conftest.py 文件
新建 conftest.py 文件名称固定与运行的用例在同一个 package 下面不用导入 pytest 会自动查找文件里面可以单独管理一些预置的操作场景在执行用例的时候就会预置执行。示例 第三步生成测试报告
想要生成测试报告需要先安装 pytest-html 安装命令
pip install pytest-html
3.1 使用命令行生成报告 --html路径/文件名.html 不写路径就默认为当前路径
3.2 使用 PyCharm 生成报告 生成的报告大概是这样的 3.3 高大上的测试报告
想要生成高大上的测试报告自行百度 PytestAllure可以集成到 Jenkins自动生成高大上的自动化测试报告效果图大概是这样的 3.4 生成 xml 报告
--junit-xml路径/文件名.xml 效果大概是这样的 扩展
输出覆盖率报告
pytest 可以输出覆盖率的 html 报告使用命令如下
pytest -vv --cov./ --cov-reporthtml 有可能遇到报错
pytest: error: unrecognized arguments: --cov-reporthtml
? inifile: None
? rootdir: /Users/joe/workspace/platform/mgap-mendel/mgap-mendel 原因
缺少 pytest cov 的包
解决方法
pip install pytest-cov 大概是这样的 设置重复执行的执行范围
--repeat-scope
--repeat-scope 类似于 pytest fixture 的 scope 参数--repeat-scope 也可以设置参数session moduleclass 或者 function
function 范围针对每个用例重复执行再执行下一个用例
class 以 class 为用例集合单位重复执行 class 里面的用例再执行下一个module 以模块为单位重复执行模块里面的用例再执行下一个
session 重复整个测试会话即所有收集的测试执行一次然后所有这些测试再次执行等等
示例如下 scopefunction --count2 以用例为单位执行
执行每个用例两次如果是 class 则以类为单位执行是执行类里面的用例重复执行 重复测试直到失败
将 pytest 的-x 选项与 pytest-repeat 结合使用以强制测试运行器在第一次失败时停止。例如
pytest --count1000 -x test_tt.py
这样将执行 1000 次用例直到失败就停止执行时可以带多个参数更多的东西需自己去探索。
配置文件
配置文件可以改变 pytest 框架的运行规则比如可以改变 pytest 收集用例的规则添加命令参数。
如下配置 addopts -s --html./report.html 执行 pytest 时就能自动生成报告修改
python_files test_*.py python_classes Test_* python_functions test_*
内容就可以改变 pytest 收集用例的规则比如修改 python_files test_*.py check_*.py则执行 pytest 时以 check_*.py 开头的文件也可以自动执行。 使用配置文件的方法在项目根目录下新建 pytest.ini 文件然后自行配置参数常用的如下
[pytest]
# 命令行参数addopts -s # 搜索文件名
python_files test_*.py # 搜索的类名python_classes Test_* #搜索的函数名
python_functions test_*
setup 与 teardown 函数
Pytest 是 unittest 的扩展也可以实现 setup开始时执行一次和 teardown
结束时执行一次简单提及详细内容可自行百度。
Pytest 支持 setup/teardown但是更推荐使用 pytest.fixture
总结
感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。