建设厅五大员证书查询网站,银行服务外包公司排名,京东网上商城下载,临沂网站建设网站推广一、pytest单元测试框架
1.什么是单元测试框架#xff1f;
单元测试是指在软件开发当中针对软件的最小单位#xff08;函数、方法#xff09;进行正确性的检查测试
2.单元测试框架有哪些#xff1f;
Java#xff1a;junit 和 testing
python#xff1a;unittest 和 …
一、pytest单元测试框架
1.什么是单元测试框架
单元测试是指在软件开发当中针对软件的最小单位函数、方法进行正确性的检查测试
2.单元测试框架有哪些
Javajunit 和 testing
pythonunittest 和 pytest
3.单元测试框架主要做什么
1).测试发现从多个文件里面去找到我们的测试用例
2).测试执行按照一定的顺序和规则去执行并生成结果
3).测试判断通过断言判断预期结果和实际结果的差异
4).测试报告统计测试进度、耗时、通过率、生成测试报告 二、单元测试框架和自动化测试框架有什么关系
1.什么是自动化测试框架
把在自动化测试过程中用到的一些功能或者工具分装成各个模块包括如何进行自动化脚本编写以及分层功能的基础模块进行持续集成、定时任务的管理模块发送测试报告、进行测试结果统计分析的统计模块等将这些模块组成一套可重用的骨架
2.作用
1提高测试效率降低维护成本
2减少人工干预提高测试的准确性增加代码的重用性
3核心思想是让不懂代码的人也能够通过这个框架去实现自动化测试
3.pytest单元测试框架和自动化测试框架的关系
1单元测试框架只是自动化测试框架中的组成部分之一
2pom设计模式只是自动化测试框架中的组成部分之一
3数据驱动、关键字驱动、全局配置文件的封装、日志监控、seleniumrequests二次封装、断言、报告邮件等等 三、pytest简介
1).pytest是一个非常成熟的python的单元框架比unittest更灵活容易上手
2).pytest可以和selenium、requests、appium结合实现web自动化、接口自动化、app自动化
3).pytest可以实现测试用例的跳过以及reruns失败用例重试
4).pytest可以和allure生成非常美观的测试报告
5).pytest可以和Jenkins持续集成
6).pytest有很多非常强大的插件并且这些插件能够实现很多的使用的操作
# 如pytestpytest-html # (生成html格式的自动化测试报告)pytest-xdist # (测试用例分布式执行多CPU分发)pytest-ordering # (用于改变测试用例的执行顺序)pytest-rerunfailures # (用例失败后重跑)allure-pytest # (用于生成美观的测试报告) 现在我也找了很多测试的朋友做了一个分享技术的交流群共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源没人解答问题坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化性能安全测试开发等等方面有一定建树的技术大牛
分享他们的经验还会分享很多直播讲座和技术沙龙
可以免费学习划重点开源的
qq群号110685036 四、安装pytest
安装pytestpip install pytest 五、pytest的命名规则
1).模块名必须以test_开头或者以test_结尾 2).测试类名必须以Test开头并且不能有init方法 3).测试方法必须以test开头 六、pytest测试用例的运行方式和执行顺序
1.运行方式
1.主函数模式1).运行所有pytest.main()2).指定模块pytest.main([test_01.py])3).指定目录pytest.main([./test_py])4).通过nodeid指定用例运行nodeid有模块名、分隔符、类名、方法名、函数名组成pytest.main([test_01.py::Test01Class]) # 指定到类名pytest.main([test_01.py::Test01Class::test003]) # 指定到方法名
2.命令行模式1).运行所有pytest2).指定模块pytest test_01.py3).指定目录pytest ./test_py4).通过nodeid指定用例运行pytest test_01.py::Test01Class::test0033.通过读取pytest.ini配置文件来运行
pytest.ini这个文件他是pytest单元测试框架的核心配置文件1).位置一般放在项目的根目录2).编码必须是ANSI可以使用notepad修改编码格式3).作用改变pytest默认的行为4).运行规则不管是主函数的模式运行还是命令行模式运行都会去读取这个配置文件 2.执行顺序
unittest根据Ascll的大小来绝对的执行的顺序
pytest默认从上到下
改变默认执行顺序使用mark标记
pytest.mark.run(order3)七、Pytest生成自带的html测试报告
安装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只要有一个用例报错那么测试停止
--maxfail2出现两个用例失败就停止
-k根据测试用例的部分字符串指定测试用例
5.使用pytest.mark.skip()跳过该用例(函数)
class Test01Class():pytest.mark.skip # 跳过test001def test001(self):assert 5 4 # 断言 6.pytest运行结果字符意义
. 点号表示用例通过 F 表示失败 Failure E 表示用例中存在异常 Error S 表示跳过 skipped 八、读取文件
1.读取csv文件
import csv #导入csv模块
class ReadCsv():def read_csv(self):item [] #定义一个空列表c csv.reader(open(../commonDemo/test1.csv,r)) #得到csv文件对象for csv_i in c:item.append(csv_i) #将获取的数据添加到列表中return itemr ReadCsv()
print(r.read_csv()
具体步骤
1.拿到开发的代码class CalcClass():def xf(self, a, b):c a * breturn cdef cf(self, a, b):c a / breturn c
# cc CalcClass()
# ff cc.xf(1,2)
# print(ff)
# gg cc.cf(1,2)
# print(gg)
2.要测试的数据
2,3,6
3.读取CSV文件
import csv # 导入csv模块class ReadCsv():def read_csv(self):item [] # 定义一个空列表c csv.reader(open(../dataDemo/a.csv, r, encodingutf-8)) # 得到csv文件对象for csv_i in c:item.append(csv_i) # 将获取的数据添加到列表中return item# r ReadCsv()
# print(r.read_csv())4.测试用例生成测试报告代码 from readDemo.readcsv import ReadCsv
import pytest
from demo.calcDemo import CalcClass
import os
import allurer ReadCsv()
rr r.read_csv()
c CalcClass()class TestCsv():def testcsv(self):for i in rr:bl c.xf(int(i[0]), int(i[1]))assert bl int(i[-1])if __name__ __main__:pytest.main([--html./Csvreport.html, test_csv.py])
5.生成测试报告 读取xml文件
from xml.dom import minidom
class Readxml():def read_xml(self,filename,onename,twoname):root minidom.parse(filename)firstnode root.getElementsByTagName(onename)[0]secondnodefirstnode.getElementsByTagName(twoname)[0].firstChild.datareturn secondnode 九、allure
Allure是一款轻量级并且非常灵活的开源测试报告框架。它支持绝大多数测试框架 例如TestNG、Pytest、JUint等。它简单易用易于集成。 1.配置allure的环境变量 2.验证allure是否配置成功 3.安装allure
pip install allure-pytest
# allure-pytest是Pytest的一个插件通过它我们可以生成Allure所需要的用于生成测试报告的数据
4.Allure常用的几个特性
allure.feature # 用于描述被测试产品需求
allure.story # 用于描述feature的用户场景即测试需求
with allure.step# 用于描述测试步骤将会输出到报告中
allure.attach # 用于向测试报告中输入一些附加的信息通常是一些测试数据截图 5.具体效果
from readDemo.readcsv import ReadCsv
import pytest
from demo.calcDemo import CalcClass
import os
import allurer ReadCsv()
rr r.read_csv()
c CalcClass()class TestCsv():allure.feature(两数相乘) # 用于描述被测试产品需求allure.story(乘除结果) # 用于描述feature的用户场景即测试需求def testcsv(self):with allure.step(查看乘法结果): # 用于描述测试步骤将会输出到报告中allure.attach(6, 附加信息) # 用于向测试报告中输入一些附加的信息通常是一些测试数据截图等for i in rr:bl c.xf(int(i[0]), int(i[1]))assert bl int(i[-1])if __name__ __main__:pytest.main([--alluredir, reportCsv/result, test_csv.py])split allure generate ./reportCsv/result -o ./reportCsv/html --clean # 将测试报告转为html格式os.system(split) # system函数可以将字符串转化成命令在服务器上运行 如果我的博客对你有帮助、如果你喜欢我的博客内容请 “点赞” “评论” “收藏” 一键三连哦