换友链的网站,网络哪家公司比较好,中国营销网站大全,广告推广的方式有哪些目录#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结#xff08;尾部小惊喜#xff09; 前言
1、pytest前置条件… 目录导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结尾部小惊喜 前言
1、pytest前置条件后置条件的两种写法
使用yield关键字来是实现 推荐使用这种因为yield关键字能返回函数的值
import pytest
pytest.fixture()
def befor_func():print(xxxxxxxxxxxxx测试用例的初始化xxxxxxxxxxxxxxxx)yield 10 #yield后面跟的是测试用例的后置条件支持用例执行后就执行yield里的内容print(zzzzzzzzzzzzzzzzzz测试用例的清除zzzzzzzzzzzzzz)def test_001(befor_func):print(测试用例001)resbefor_funcprint(res)if __name__ __main__:pytest.main([test1.py,-s])使用finc()函数来实现 这种就不能返回返回值了
import pytest
pytest.fixture()
def befor_func(request):print(xxxxxxxxxxxxx测试用例的初始化xxxxxxxxxxxxxxxx)def fin(): #尾部这是后置条件测试用例执行后就会调用这个函数 print(zzzzzzzzzzzz测试用例的清除zzzzzzzzzzz)request.addfinalizer(fin) #回调当我整个包运行完了后回调fin这个方法
def test_001(befor_func):print(测试用例001)if __name__ __main__:pytest.main([test1.py,-s])2、pytest数据驱动参数化
pytest数据驱动的意义 参数化登录用例4条每一个账号密码都不同使用框架把4个用例全部执行完不需要for循环遍历执行采用数据驱动方案来做
pytest内置装饰器pytest.mark.parametrize可以让测试数据参数化把测试数据单独管理类似ddt数据驱动的作用方便代码和测试数据分离
pytest.mark.parametrize(a,[1,2,3]) # 参数化传一组参数 pytest.mark.parametrize(a,b, [(1,2),(3,4),(5,6)]) # 参数化传多组参数登录账户密码name和psw不同的用例组合一个接口几十个用例怎么做----几十组数据----传的参数不同什么请求方式和各种都一样
可以把name和psw分别采取多组数据进行参数化数据分离一个接口跑4次每次用不同的参数
import pytest#[(1,2),(3,4),(5,6)] [1,2,3]class Test_login(): def setup_class(self):print(执行测试类之前我需要执行操作)pytest.mark.parametrize(a,[1,2,3]) #(变量名,[1,2,3]),数据需要封装成一个列表多个数据需要封装成列表嵌套元组 ----数据驱动def test_login01(self,a): #数据驱动一定要把变量名a引入引来不然无法参数化print(---test_login01----)assert 1 1 apytest.mark.parametrize(a,b, [(1,2),(3,4),(5,6)]) #数据驱动传多组参数def test_login02(self,a,b):print(---test_login02----)assert a 1 bdef teardown_class(self):print(------该测试类的环境清除-----)if __name__ __main__:pytest.main([test_func01.py,-s])3、pytest结合allure报告操作
pytest自带的报告框架 pytest-html allure环境搭建allure是报告库不是python专属的很全面的框架-allure报告漂亮
下载allure.zip压缩包 解压allure.zip到一个文件目录 将allure-2.13.3\bin路径添加到环境变量path pip install allure-pytest -------allure报告本身不是很漂亮通过allure-pytest这个库可以定制化报告让报告变得很漂亮 验证cmd输入allure
allure和pytest联合执行生成报告运行两条语句
执行pytest单元测试生成的allure报告需要的数据存在/tmp目录
pytest -sq --alluredir../report/tmp #pytest把allure报告的生成的中间文件放到一个临时文件里面pytets生成报告需要数据所以先把数据存起来所有的报告需要数据支持的数据来源pytest框架本身结果数据存到一个文件存在…/report/tmp文件夹 tmp临时文件一般json格式
执行命令生成测试报告
allure generate ../report/tmp -o ../report/report -clean #allure指令生成对应报告allure模拟代码
import pytest
import os
class Test_login(): def setup_class(self):print(执行测试类之前我需要执行操作)pytest.mark.parametrize(a,[1,2,3])def test_login01(self,a): print(---test_login01----)assert 1 1 apytest.mark.parametrize(a,b, [(1,2),(3,4),(5,6)])def test_login02(self,a,b):print(---test_login02----)assert a 1 bdef teardown_class(self):print(------该测试类的环境清除-----)if __name__ __main__:#需要打印对应的信息需要在列表里面加-s#1:--alluredir ---生成临时文件测试用例的结果数据放到目录 --alluredir 存放目录pytest.main([test_func01.py,-s,--alluredir,../report/tmp]) #框架自己调用函数#通过--alluredir把allure需要的数据存到../report/tmp这个路径下面#../--所在路径的父级别目录是test_case的目录隔壁邻居report文件下tmp专门放alluer报告生成的需要的数据源# 2:临时数据没有报告的allure generate allure才会生成报告 -----allure生成器生成allure报告--generate allure生成器,cmd指令#需要os模块os.system()调用指令可以在local的cmd里面敲os.system(allure generate ../report/tmp -o ../report/report --clean)#os.system(allure generate 报告需要的数据 -o 报告存放目录 --clean)#-o生成#allure generate生成报告指令把../report/tmp 的文件-o生成报告out out一下生成的报告放在../report/report#--clean把上次报告清除一下用--clean #allure报告生成的是一个服务本地服务和jinkins结合放在整个里面去集成放到公共服务器里面allure报告的优化
import pytest
import os
import allure
allure.feature(登录模块) #一级标题大模块标题类标签
class Test_login(): def setup_class(self): print(执行测试类之前我需要执行操作)allure.story(登录login01) # 二级标签每个接口的标签allure.title(login01) # 标题每个用例带个标题报告体现在每个测试用例(一个接口有几个用例title用例的标签)pytest.mark.parametrize(a,[1,2,3]) def test_login01(self,a): print(---test_login01----)assert 1 1 aallure.story(登录login02) # 二级标签定制allure报告层级allure.title(login02) #标题每个用例带个标题报告体现在每个测试用例pytest.mark.parametrize(a,b, [(1,2),(3,4),(5,6)]) def test_login02(self,a,b):print(---test_login02----)assert a 1 bdef teardown_class(self): print(------该测试类的环境清除-----)allure.feature(购物模块)
class Test_Shopping():allure.story(shopping)allure.title(shopping01)pytest.mark.parametrize(a,b, [(1, 2), (3, 4), (5, 6)])def test_shopping(self, a, b):print(---test_login02----)assert a 1 b
if __name__ __main__:pytest.main([test_func01.py,-s,--alluredir,../report/tmp]) os.system(allure generate ../report/tmp -o ../report/report --clean)#allure报告生成的是一个服务本地服务和jinkins结合放在整个里面去集成放到公共服务器里面其他知识点 测试用例一般写在excel表格文件里面数据分离维护好excel就行 pytest–从头到尾到报告执行发邮件 字典是一种存储类型json是一种格式完全不同
4、pytest参数解析
pytest.main([‘test_boss.py’,‘-s’,‘-k test_modify_psw’,‘–alluredirtmp/my_allure_results’])
说明 test_boss.py指定测试用例文件 -s显示print语句 -k test_modify_psw指定某个测试用例 -n表示用两个进程启动测试脚本
生成报告缓存文件–alluredirtmp/my_allure_results os.system(‘allure serve tmp/my_allure_results’)打开测试报告命令行需要python 的os模块调用
5、pytest的初始化和清除
import pytest
#假设启动被测app的时候需要去填写配置项信息每个的端口号不同多终端需要两个appim server
#这时候setup_module和teardown_module不能传参搞不定需要换一种方法做测试用例的初始化和清除#setup_module以模块为作用域不写module以测试用例测试函数为作用域
# def setup_module(): #测试用例之前执行原始的setup和teardown有个缺陷里面不能传参数
# #默认test级别每个测试用例执行的时候都会执行一次希望当前某个模块执行的时候只执行一次不管里面用例执行多少次
# #setup初始化和tear_down升个级升级成module模块级别的
# print(启动被测app)
# print(连接appium服务)
#
# def teardown_module():
# print(关闭被测app)
# print(断开appium服务)#定义个函数名字随便取 使用pytest.fixture装饰器把这个函数装饰成初始化清除函数
pytest.fixture(scopemodule) #作用域默认test初始化加装饰器初始化清除函数,autouseTrue自动执行这种方法不建议使用 #
def before_test(): #初始化函数升级作用域到module模块级别print(启动被测app)print(连接appium服务)yield #后面写清除动作after_test()#清除函数清除函数并不会直接被初始化函数使用我们必须放在初始化函数yiled后面才能回被调用
def after_test():print(关闭被测app)print(断开appium服务)
#目前一共有两个port需要测试两个手机两个多终端,before_test需要装饰器标记#测试用例的参数化
pytest.mark.usefixtures(before_test) #这表示调用某个自定义的初始化函数括号里面的字符串写被调用函数的名字
pytest.mark.parametrize(psw,[boss123,boss456])
def test_app(psw): #测试用例可能涉及到其他参数,比如需要一些配置信息,测试用例涉及到参数 #多组参数需要使用装饰器pytest.mark.parametrize(数据驱动)psw传参和形参名字对应的print(测试boss app)print(f登录测试账号{psw})if __name__ __main__:pytest.main([pytest_ywt.py,-s])下面是我整理的2023年最全的软件测试工程师学习知识架构体系图
一、Python编程入门到精通 二、接口自动化项目实战 三、Web自动化项目实战 四、App自动化项目实战 五、一线大厂简历 六、测试开发DevOps体系 七、常用自动化测试工具 八、JMeter性能测试 九、总结尾部小惊喜
千锤百炼方成钢一腔热血铸辉煌。奋斗是追逐梦想的征程每一次努力都在为成功铺就坚实的基石。永不放弃勇往直前用汗水浇灌希望的花朵终将开出属于自己的辉煌人生。
生命如一朵盛开的花朵只有经历风雨的洗礼才能绽放出光彩夺目的美丽。坚持自己的梦想勇敢追逐奋斗不止你将终获辉煌的成就因为努力是改变命运的钥匙。
人生如天空之星只有付出坚持的努力才能闪耀璀璨的光芒。不畏艰难困境锲而不舍地追求梦想奋斗的力量将引领你超越自我驶向辉煌的彼岸。相信自己勇往直前成功必将属于你。