pytest 其实是一个单元测试框架


 

解释: 在软件开发过程中,针对最小的单位(函数,方法)进行正确性的检查测试


 

比如 java: junit 或者 testng

       python: unittest 或者 pytest


 


举例:1.测试发现(从某个文件或多个文件中找到需要执行的测试用例)


          2.测试执行(安装一定的顺序和规则去执行,生成结果)


          3.测试断言(通过断言判断预期结果和实际结果的差异)


          4.测试报告(统计测试进度,耗时,通过率,以及测试过程详情,生成测试报告)


 

 


单元测试框架和自动化测试框架有什么关系


什么是自动化测试框架


解释: 自动化框架就是封装一些自动化所使用的基础模块,测试中使用到的第三方工具模块,以及设计测试用例书写的项目架构模块(设计模式),最后使用单元测试框架进行产出


 


自动化测试框架的作用


1.提高测试效率,降低维护成本


2.减少人工干预,提高测试准确性,增加代码的重用性


3.核心思想是让不懂代码的人也能够通过这个框架去实现自动化测试


      


pytest功能


1.pytest+selenium  或 requests 或 appium


2.pytest可以实现测试用例的跳过以及reruns失败用例重试


3.pytest可以和allure生成非常美观的测试报告


4.pytest可以和jenkins持续集成


5.pytest有很多非常强大的插件,在自动化过程中能实现很多实用的操作


        pytest


        pytest-html(生成html格式的自动化报告)
        pytest-xdist (测试用例分布式执行,多cpu分发)


        pytest-ordering (改变测试用例的执行顺序)


        pytest-rerunfailures (用于用例失败后的重跑)


        allure-pytest(用于生成美观的测试报告)


安装:创建一个文件,将需要的安装包全部写在文件内。使用pip install -r 文件名




pytest的夹具 pytest框架原理_pytest的夹具


 


使用pytest,默认的测试用例的规则以及基础使用


1.模块名必须以test_开头 或者 _test结尾


2.测试类必须以Test开头,并且不能有init方法


3.测试用例必须以test开头


 


pytest的夹具 pytest框架原理_用例_02


 

使用pytest的运行方式


1.主函数模式运行


pytest.main()


      指定模块:

pytest的夹具 pytest框架原理_测试用例_03


 


3.可以指定目录执行 pytest.main(['vs', ' 模块名 '])


 


2.命令行模式运行


     运行所有:E:\pyt_obj>pytest


 


     参数详解:

pytest的夹具 pytest框架原理_pytest的夹具_04

 输出调试信息,包括print打印出来的信息 


                     

pytest的夹具 pytest框架原理_pytest的夹具_05

输出详细的信息,包括类名等


                     -n:  支持多线程或者分布式运行 

pytest的夹具 pytest框架原理_pytest的夹具_06


                     --reruns NUM 失败用例重跑,只要有失败会多跑NUM次


                        失败重跑实例:


                        

pytest的夹具 pytest框架原理_用例_07


 


 


                    --maxfail =2 出现两个用例失败就停止


                    -k : 根据测试用例的部分字符串去指定用例 pytest -vs 目录 -k "模糊匹配"


 


 


 


 


解释:主函数模式运行



pytest的夹具 pytest框架原理_测试用例_08


 


解释:命令行模式运行



pytest的夹具 pytest框架原理_pytest的夹具_09


 


 


 


 


 


3.通过读取pytest.ini配置文件运行。



pytest的夹具 pytest框架原理_用例_10


pytest的执行测试用顺序:

unittest: ascll的大小来决定的执行顺序


pytest: 默认从上到下。


如果不想按顺序执行:order = 1 第一个执行  通过mark标记 则改变默认执行顺序


        

pytest的夹具 pytest框架原理_用例_11


 


 

 


如何分组执行 (冒烟等)


 


smoke:冒烟测试用例,分布在各个模块中,可以分模块分组等。使用mark


 


 


第一步:给不同组别的测试用例增加mark.指定名称



pytest的夹具 pytest框架原理_用例_12


第二步:给pytest.ini中增加markers=指定名称:备注


 



pytest的夹具 pytest框架原理_pytest的夹具_13


第三步 -m "指定名称"



pytest的夹具 pytest框架原理_pytest的夹具_14


 


番外:如果想执行多组,可以用 or 增加不同模块的用例执行



pytest的夹具 pytest框架原理_测试用例_15