手把手教你pytest测试框架(1)—— 初识框架
pytest测试框架
简介
pytest是Python的测试框架,类似于unittest,但比unittest更简洁,直接,易上手,功能更强大,且可兼容unittest的代码。
它可以实现,执行用例时跳过某些用例、用例执行失败后可重新执行、对执行失败的用例进行标记等。
pytest有丰富的第三方插件,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等。
pytest还支持自定义扩展。
安装
pip install pytest
安装后,可通过pytest –version命令查看版本
文件、类及函数命名及书写规则
使用pytest,文件、类、函数不能随意命名,必须按照其规则进行命名,否则pytest无法识别。
测试文件以test_开头(以_test结尾也可)
测试类以Test开头,注意,Test首字母要大写
测试类名称后面直接跟冒号,而不能有()
测试类不能带有 init 方法
测试类里的每个函数都必须有参数(self)
测试函数以test_开头,注意,这时首字母要小写
断言使用基本的assert即可
一个简单的pytest实践
先创建一个文件叫做test_study.py,注意文件名是以test_开头的,符合pytest规则,在这个文件里写一段简单的程序:
在这里,test_answer()是以test_开头的,这符合规则,但func(x)则无需按规则命名,因为我们测试的是test_answer()函数,如果想测试func(x)函数,那么也需把它按规则命名
无需import pytest,写完两个函数后也无需调用它们,注意,第二个函数里面调用了第一个函数,且使用了断言,且故意使断言语句发生错误,func(3)的正确值应为4,但故意写成5以制造一个错误
执行的时候,不要在pycharm里直接执行,要在pycharm的terminal里或以管理员身份在命令行窗口里输入pytesttest_study.py(执行方式实际不止这两种,实际是三种,后文书介绍)
执行结果:
terminal:
命令行:
二者的结果是一样的,其中有如下结果:
它告诉我们,def test_answer()这个函数发生错误,断言应为4,但实际给的值是5。
执行方式
Terminal执行
第一是在pycharm的Terminal里输入命令来执行,如pytest -s test_study.py -m=mn1
以管理员身份在命令行执行
第二是以管理员身份在命令行窗口里输入命令来执行,如pytest -stest_study.py -m=mn1
main语句块执行
第三是在python代码本身里执行,这种方式需要:
把命令写到main语句块里
在pytest后面加上.main
把参数、文件名称用引号引起来
如pytest.main([“-s”,“test_study.py”, “-m=mn1”])
调用执行
如果把调用语句单独写出来,并且不放到main语句块里,那么也是可以执行用例的,比如下面的写法:
但是这种写法很容易出错,经常会把用例执行多遍,原因尚不明,所以要杜绝这种写法,解决这个问题的方法有两种:
把执行语句单独放到一个文件里,如下面的写法:
直接执行这个文件,就可以正确执行相应的用例了。
把执行语句封装成函数,再调用这个函数,如下面写法:
execute.py文件里封装了执行语句,再在main.py里调用它:
这样就可以了。
特别注意:如果采用了以上两种方法,仍然出现用例执行多遍的现象,通常是在某个文件里的main语句块外写上了执行语句,再强调一遍,那种写法容易造成用例执行多遍,必须严格杜绝。
需要注意的一个问题
不论是在Terminal、命令行,还在main语句块里,输入执行命令时等号两端都不能有空格,如这样:“-m = mn1”。
虽然等号两端加空格在python里是一种常用写法,但在使用pytest时则不被语法允许,尤其要注意当在main语句块里写命令的时候,由于就是在代码中去写,所以很容易习惯性地把等号两端加上空格。(未完待续)
相关文章
- 微信小程序自动化测试pytest版工具使用方法
- Python自动化必不可少的测试框架 — pytest
- Pytest 自动化测试框架
- 目前最火的测试框架,pytest封神级讲解
- 5年高级测试工程师,还不会用Pytest+Allure实现自动化用例失败截图
- Python测试框架pytest入门基础
- 干货 | 一文搞定 pytest 自动化测试框架(二)
- 干货 | 一文搞定 pytest 自动化测试框架(一)
- 技术面试没过,居然是没有用pytest测试框架
- 超详细从入门到精通,pytest自动化测试框架实战-fixture固件高级操作(十一)
- 超详细从入门到精通,pytest自动化测试框架实战-fixture高级进阶(十)
- 超详细从入门到精通,pytest自动化测试框架实战-测试运行钩子(七)
- 超详细从入门到精通,pytest自动化测试框架实战-钩子函数(五)
- 超详细从入门到精通,pytest自动化测试框架实战教程-用例标记/执行(三)
- 就是那么轻松的掌握测试框架pytest(下)
- 「测试新手百科」5 分钟快速上手Pytest 自动化测试框架
- websocket接口自动化集成pytest测试框架
- 单元测试界的高富帅,Pytest框架,用例标记和测试执行怎么做
- 目前最火的测试框架,pytest封神级讲解
- 使用pytest-xdist实现分布式APP自动化测试
- 【用ddt思想重构项目】Selenium读取数据库数据:将数据保存到数据库,实现pytest的ddt测试
- pytest+allure测试框架搭建