赞
踩
pytest单元测试框架
1、什么是单元测试框架?
单元测试是指在软件开发当中针对软件的最小单位(函数、方法)进行正确性的检查测试
2、单元测试框架有哪些?
Java:junit 和 testing
python:unittest 和 pytest
3、单元测试框架主要做什么?
测试发现:从多个文件里面去找到我们的测试用例
测试执行:按照一定的顺序和规则去执行,并生成结果
测试判断:通过断言判断预期结果和实际结果的差异
测试报告:统计测试进度、耗时、通过率、生成测试报告
单元测试框架和自动化测试框架有什么关系
1、什么是自动化测试框架?
把在自动化测试过程中用到的一些功能或者工具,分装成各个模块,包括如何进行自动化脚本编写以及分层功能的基础模块,进行持续集成、定时任务的管理模块,发送测试报告、进行测试结果统计分析的统计模块等,将这些模块组成一套可重用的骨架
2、作用
提高测试效率,降低维护成本;
减少人工干预,提高测试的准确性,增加代码的重用性;
核心思想是:让不懂代码的人也能够通过这个框架去实现自动化测试;
3、pytest单元测试框架和自动化测试框架的关系
单元测试框架:只是自动化测试框架中的组成部分之一
pom设计模式:只是自动化测试框架中的组成部分之一
数据驱动、关键字驱动、全局配置文件的封装、日志监控、selenium,requests二次封装、断言、报告邮件等等
pytest简介
pytest是一个非常成熟的python的单元框架,比unittest更灵活,容易上手;
pytest可以和selenium、requests、appium结合实现web自动化、接口自动化、app自动化;
pytest可以实现测试用例的跳过以及reruns失败用例重试;
pytest可以和allure生成非常美观的测试报告;
pytest可以和Jenkins持续集成;
pytest有很多非常强大的插件,并且这些插件能够实现很多的使用的操作;
# 如
pytest
pytest-html # (生成html格式的自动化测试报告)
pytest-xdist # (测试用例分布式执行,多CPU分发)
pytest-ordering # (用于改变测试用例的执行顺序)
pytest-rerunfailures # (用例失败后重跑)
allure-pytest # (用于生成美观的测试报告)
安装pytest
安装pytest:
pip install pytest
pytest的命名规则
模块名必须以test_开头或者以test_结尾;
测试类名必须以Test开头,并且不能有init方法;
测试方法必须以test开头;
pytest测试用例的运行方式和执行顺序
1、运行方式
主函数模式
运行所有:pytest.main()
指定模块:pytest.main([“test_01.py”])
指定目录:pytest.main([“./test_py”])
通过nodeid指定用例运行: nodeid有模块名、分隔符、类名、方法名、函数名组成
pytest.main(["test_01.py::Test01Class"]) # 指定到类名
pytest.main(["test_01.py::Test01Class::test003"]) # 指定到方法名
2、命令行模式
运行所有:pytest
指定模块:pytest test_01.py
指定目录:pytest ./test_py
通过nodeid指定用例运行: pytest test_01.py::Test01Class::test0033.通过读取pytest.ini配置文件来运行pytest.ini这个文件他是pytest单元测试框架的核心配置文件
位置:一般放在项目的根目录
编码:必须是ANSI,可以使用notepad++修改编码格式
作用:改变pytest默认的行为
运行规则:不管是主函数的模式运行,还是命令行模式运行,都会去读取这个配置文件
3、执行顺序
unittest:根据Ascll的大小来绝对的执行的顺序
pytest:默认从上到下
改变默认执行顺序:使用mark标记
@pytest.mark.run(order=3)
Pytest生成自带的html测试报告
安装pytest-html:
pip install pytest-html
1、直接执行pytest.main() 【自动查找当前目录下,以test开头的文件或者以test结尾的py文件】
pytest.main([‘--html=./report.html’])
2、pytest.main(“模块.py”)【运行指定模块下,运行所有test开头的类和测试用例】
pytest.main(["--html=./report.html","模块.py"])
3、运行指定模块指定类指定用例,冒号分割,并生成测试报告
pytest.main([‘--html=./report.html’,‘模块.py::类::test_a_001'])
4、Pytest调用语句
pytst.main(['-x','--html=./report.html','t12est000.py'])
-x:出现一条测试用例失败就退出测试
-s:显示print内容
-v:显示更详细的信息
-vs:这两个参数一起使用
-n:支持多线程或者分布式运行测试用例
-reruns NUM:失败用例重跑
-x:只要有一个用例报错,那么测试停止
–maxfail=2:出现两个用例失败就停止
-k:根据测试用例的部分字符串指定测试用例
5、使用@pytest.mark.skip()跳过该用例(函数)
class Test01Class():
@pytest.mark.skip # 跳过test001
def test001(self):
assert 5 == 4 # 断言
6、pytest运行结果字符意义
.:点号,表示用例通过
F:表示失败 Failure
E:表示用例中存在异常 Error
S:表示跳过 skipped
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
在人生的舞台上,奋斗是最美的旋律。不畏困难,放飞梦想,用汗水浇灌成长的花朵。坚持信念,砥砺前行,只有不停奋斗,才能赢得属于自己的荣耀与成功。
付出不一定有回报,但不付出却一定没有收获。勇敢面对困难,坚持努力,无畏失败。奋斗的热血将点亮未来的路,只要你不停歇地前行,成功的曙光必将照耀你的人生。
每天都是一次重生的机会,勇往直前,追逐梦想吧!不管前方有多少艰难险阻,只要心怀信念,努力拼搏,你将绽放出耀眼的光芒,让世界为你而改变。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。