北京免备案网站建设,河北省永清县建设局网站,站长之家的作用,邯郸做wap网站找谁一、Python测试框架#xff0c;主要特点有以下几点#xff1a;
简单灵活#xff0c;容易上手#xff1b;支持参数化#xff1b;能够支持简单的单元测试和复杂的功能测试#xff0c;还可以用来做selenium/appnium等自动化测试、接口自动化测试#xff08;pytestrequests…一、Python测试框架主要特点有以下几点
简单灵活容易上手支持参数化能够支持简单的单元测试和复杂的功能测试还可以用来做selenium/appnium等自动化测试、接口自动化测试pytestrequests;pytest具有很多第三方插件并且可以自定义扩展比较好用的如pytest-selenium集成selenium、pytest-htmlhtml测试报告生成、pytest-rerunfailures失败case重复执行、pytest-xdist多CPU分发、allure-pytest生成测试报告等测试用例的skip和xfail处理可以很好的和jenkins集成pytest默认执行顺序是按照case顺序位置先后执行的pytest.ini和conftest.py文件要放在执行的同级目录根目录
二、安装pytest
1、命令行安装pip install pytest
2、通过pycharm 【File】-【settings】-【Python Interpreter】搜索后安装
通过命令行pytest执行test_mod1.py文件中的代码
import pytestdef test_one():print(执行测试用例test_one)def test_second():print(执行测试用例test_second)
在pycharm命令行中输入pytest -v test_mod1.py
输出
collected 2 itemstest_mod1.py::test_one PASSED [ 50%]
test_mod1.py::test_second PASSED
通过pytest.main( )执行test_mod1.py的代码
import pytestdef test_one():print(执行测试用例test_one)def test_second():print(执行测试用例test_second)if __name__ __main__:pytest.main([-vs])结果
collecting ... collected 2 itemstest_mod1.py::test_one PASSED [ 50%]执行测试用例test_onetest_mod1.py::test_second PASSED [100%]执行测试用例test_second三、识别case的规则
如果pytest命令行有指定目录则从该目录中开始查找测试用例文件如果没有指定则从当前运行目录开始查找文件。注意该查找是递归查找子目录中的文件也会被查找到。并不是能够查找到目录下的所有文件只有符合命名规则的文件才会被查找。默认规则是以test_开头或者以_test结尾的.py文件。在测试文件中查找Test开头的类以及类中以test_开头的方法查找测试文件中test_开头的函数
文件目录结构如下 在命令行中执行 pytest -vs
D:\Python Data\pythonTeachpytest -vs
# test_mod3.py
import pytestclass TestMod3:def test_five(self):print(执行测试用例test_five)def test_six(self):print(执行测试用例test_six)
# mod2_test.py
import pytestdef test_three():print(执行测试用例test_three)def test_four():print(执行测试用例test_four)# test_mod1.py
import pytestdef test_one():print(执行测试用例test_one)def test_second():print(执行测试用例test_second)if __name__ __main__:pass
执行结果
mod2_test.py::test_three 执行测试用例test_three
PASSED
mod2_test.py::test_four 执行测试用例test_four
PASSED
test_mod1.py::test_one 执行测试用例test_one
PASSED
test_mod1.py::test_second 执行测试用例test_second
PASSED
mod3/test_mod3.py::TestMod3::test_five 执行测试用例test_five
PASSED
mod3/test_mod3.py::TestMod3::test_six 执行测试用例test_six
PASSED
因为 pytest -vs 该命令没有指定目录则从 D:\Python Data\pythonTeach 文件夹运行目录递归查找以test_开头或者以_test结尾的.py文件在测试文件中查找Test开头的类以及类中以test_开头的方法查找测试文件中test_开头的函数
pytest 执行指定文件夹
pytest -vs ./mod3/结果
collected 2 itemsmod3/test_mod3.py::TestMod3::test_five 执行测试用例test_five
PASSED
mod3/test_mod3.py::TestMod3::test_six 执行测试用例test_six
PASSED
递归执行mod3文件夹下的所有以test_开头或者以_test结尾的.py文件在测试文件中查找Test开头的类以及类中以test_开头的方法查找测试文件中test_开头的函数
三、pytest 执行case时可选参数
-v: #打印详细运行的日志信息
-s: pytest -s xxx.py #输出case中print的内容
-m: pytest -m “tag名称” #运行指定tag名称的用例也就是运行有pytest.mark.[标记名]这个标记的case
-k: # pytest -k “类名、方法名、类名 and not 方法名” 运行指定case的用例
-x: #遇到失败的case就是停止执行
--lf #只重新运行上次运行失败的用例或如果没有失败的话会全部跑
--ff #运行所有测试但首先运行上次运行失败的测试这可能会重新测试从而导致重复的fixture setup/teardown
--maxfailnum #当用例失败个数达到num时停止运行
--collect-only: #收集测试用例展示出哪些用例会被执行只是展示不会执行case
--junit-xml--junit-xmlpath/name.xml #在指定目录或当前目录下生成xml格式的报告需要在pytest.ini文件内声明格式junit_familyxunit2
--steup-show #完整展示每个用例的fixture调用顺序
命令行执行
pytest test_quick_start.py --junit-xmlreport.xmlmain执行
pytest.main([-s, TestCalc.py, -m, div, --junit-xmlreport.xml])
pytest.main([-vsx, TestCalc.py, -m, div])
pytest.mark.标记名 为测试用例指定 tag 名称
import pytestdef test_one():print(执行测试用例test_one)pytest.mark.smoke # 为test_second()测试用例指定名称为smoke的tag
def test_second():print(执行测试用例test_second)
D:\Python Data\pythonTeachpytest -vsm smoke
通过 -m 标记名 指定执行用例
结果
test_mod1.py::test_second 执行测试用例test_second
PASSED
通过pytest.main( )执行标记的用例
# run_test.py
import pytestif __name__ __main__:pytest.main([-vsm, smoke,test_mod1.py])
通过-k指定测试用例执行
D:\Buyer_test_code\testteachpytest -vs -k test_three
执行结果
mod2_test.py::test_three 执行测试用例test_three
PASSED
上述命令行中加入了-k参数-k “类名、方法名、类名 and not 方法名”来运行指定的case
任务
1、编写test_demo1.py文件文件中包含test_01, test_02test_03函数通过命令行执行test_demo1.py中的所有test开头的函数
2、在项目目录下新建一个demo的文件夹demo文件夹下新建test_demo2.py,test_demo2.py下包含test_04,test05函数通过命令行执行该项目目录下所有test开头的.py文件通过命令行只执行demo文件夹下的test开头的.py文件
3、在命令行中分别加入-v, -s, -k 参数来执行case 文章转载自: http://www.morning.rpwm.cn.gov.cn.rpwm.cn http://www.morning.tlfmr.cn.gov.cn.tlfmr.cn http://www.morning.fwmln.cn.gov.cn.fwmln.cn http://www.morning.gqcsd.cn.gov.cn.gqcsd.cn http://www.morning.jfsbs.cn.gov.cn.jfsbs.cn http://www.morning.qyrnp.cn.gov.cn.qyrnp.cn http://www.morning.junmap.com.gov.cn.junmap.com http://www.morning.jhwqp.cn.gov.cn.jhwqp.cn http://www.morning.pcwzb.cn.gov.cn.pcwzb.cn http://www.morning.rcbdn.cn.gov.cn.rcbdn.cn http://www.morning.wqnc.cn.gov.cn.wqnc.cn http://www.morning.fydsr.cn.gov.cn.fydsr.cn http://www.morning.dwmtk.cn.gov.cn.dwmtk.cn http://www.morning.pghgq.cn.gov.cn.pghgq.cn http://www.morning.pxwzk.cn.gov.cn.pxwzk.cn http://www.morning.kdjtt.cn.gov.cn.kdjtt.cn http://www.morning.cszbj.cn.gov.cn.cszbj.cn http://www.morning.qrlkt.cn.gov.cn.qrlkt.cn http://www.morning.lhptg.cn.gov.cn.lhptg.cn http://www.morning.ntqgz.cn.gov.cn.ntqgz.cn http://www.morning.jfjfk.cn.gov.cn.jfjfk.cn http://www.morning.dkcpt.cn.gov.cn.dkcpt.cn http://www.morning.bqpg.cn.gov.cn.bqpg.cn http://www.morning.dgxrz.cn.gov.cn.dgxrz.cn http://www.morning.lmrjn.cn.gov.cn.lmrjn.cn http://www.morning.gwyml.cn.gov.cn.gwyml.cn http://www.morning.pqbkk.cn.gov.cn.pqbkk.cn http://www.morning.lwlnw.cn.gov.cn.lwlnw.cn http://www.morning.hlshn.cn.gov.cn.hlshn.cn http://www.morning.gxtfk.cn.gov.cn.gxtfk.cn http://www.morning.hxxyp.cn.gov.cn.hxxyp.cn http://www.morning.ngjpt.cn.gov.cn.ngjpt.cn http://www.morning.dgknl.cn.gov.cn.dgknl.cn http://www.morning.wsyq.cn.gov.cn.wsyq.cn http://www.morning.coatingonline.com.cn.gov.cn.coatingonline.com.cn http://www.morning.tqdqc.cn.gov.cn.tqdqc.cn http://www.morning.xzlp.cn.gov.cn.xzlp.cn http://www.morning.gstmn.cn.gov.cn.gstmn.cn http://www.morning.lmrcq.cn.gov.cn.lmrcq.cn http://www.morning.pdbgm.cn.gov.cn.pdbgm.cn http://www.morning.wdjcr.cn.gov.cn.wdjcr.cn http://www.morning.wmfr.cn.gov.cn.wmfr.cn http://www.morning.xgxbr.cn.gov.cn.xgxbr.cn http://www.morning.yrbp.cn.gov.cn.yrbp.cn http://www.morning.tlpgp.cn.gov.cn.tlpgp.cn http://www.morning.lrjtx.cn.gov.cn.lrjtx.cn http://www.morning.ymjrg.cn.gov.cn.ymjrg.cn http://www.morning.drrt.cn.gov.cn.drrt.cn http://www.morning.mkzdp.cn.gov.cn.mkzdp.cn http://www.morning.mnjyf.cn.gov.cn.mnjyf.cn http://www.morning.tnwgc.cn.gov.cn.tnwgc.cn http://www.morning.qggxt.cn.gov.cn.qggxt.cn http://www.morning.rwdbz.cn.gov.cn.rwdbz.cn http://www.morning.zlxkp.cn.gov.cn.zlxkp.cn http://www.morning.rmpkn.cn.gov.cn.rmpkn.cn http://www.morning.wjwfj.cn.gov.cn.wjwfj.cn http://www.morning.hrqfl.cn.gov.cn.hrqfl.cn http://www.morning.kxsnp.cn.gov.cn.kxsnp.cn http://www.morning.rhmk.cn.gov.cn.rhmk.cn http://www.morning.tqgx.cn.gov.cn.tqgx.cn http://www.morning.txlxr.cn.gov.cn.txlxr.cn http://www.morning.ckzjl.cn.gov.cn.ckzjl.cn http://www.morning.ysbrz.cn.gov.cn.ysbrz.cn http://www.morning.jglqn.cn.gov.cn.jglqn.cn http://www.morning.frtb.cn.gov.cn.frtb.cn http://www.morning.rxzcl.cn.gov.cn.rxzcl.cn http://www.morning.hnzrl.cn.gov.cn.hnzrl.cn http://www.morning.mmtjk.cn.gov.cn.mmtjk.cn http://www.morning.qgcfb.cn.gov.cn.qgcfb.cn http://www.morning.wxqmc.cn.gov.cn.wxqmc.cn http://www.morning.trrd.cn.gov.cn.trrd.cn http://www.morning.dmrjx.cn.gov.cn.dmrjx.cn http://www.morning.yfcyh.cn.gov.cn.yfcyh.cn http://www.morning.jjzxn.cn.gov.cn.jjzxn.cn http://www.morning.ydflc.cn.gov.cn.ydflc.cn http://www.morning.gnbfj.cn.gov.cn.gnbfj.cn http://www.morning.jmspy.cn.gov.cn.jmspy.cn http://www.morning.nqmwk.cn.gov.cn.nqmwk.cn http://www.morning.rfycj.cn.gov.cn.rfycj.cn http://www.morning.qzmnr.cn.gov.cn.qzmnr.cn