首页 > 其他分享 >19. Pytest执行用例的多种方式

19. Pytest执行用例的多种方式

时间:2023-01-17 10:44:06浏览次数:37  
标签:19 demo py pytest 用例 Pytest test 运行

一、前言

我们在前面的内容中其实已经讲解了pytest用例的执行,本节课对主要针对执行用例的方式进行一个汇总。

二、学习目标

1.通过IDE运行

2.通过命令行运行

3.通过main函数运行

4.通过pytest.ini运行

三、知识点

1.【通过IDE运行】

  • 步骤一:Pycharm运行方式配置

    在使用IDE如Pycharm运行用例之前,需要修改一个配置,来指定pytest模式来执行项目:

  • 步骤二:点击箭头运行

    修改完配置后,测试用例前面会有绿色的箭头,点击箭头我们可以指定用例运行测试用例,也可以直接右键整个py文件运行全部用例:

2.【通过命令行运行】

  • 语法:

    #命令行中Terminal中输入
    pytest 【运行参数】 【指定用例】
    #如pytest -s -v test_demo.py
    
  • 运行参数

    pytest -s test_demo.py                                         #显示代码中的print或日志打印
    pytest -v test_demo.py                                         #显示用例详情
    pytest -q test_demo.py                                         #简化显示,与-v相反
    pytest --collect-only  test_demo.py                            #检查哪些测试用例会被运行
    pytest -k "not 02" test_demo.py                                #选择用例运行,可以用not,or
    pytest -x test_demo.py                                         #遇到失败用例自动停止运行
    pytest --maxfail=2 test_demo.py                                #达到最大失败数自动停止运行
    pytest --tb=short test_demo.py                                 #失败信息的显示方式,三个固定值short : 仅输出assert 的一行以及系统判定的内容;line : 只使用一行输出显示所有的错误信息;no : 屏蔽所有的回溯信息
    pytest -m "markname" test_demo.py                              #指定标签名运行,配合前面讲的mark标签装饰器
    pytest -n 3 test_demo.py                                       #分布式运行,指定3个进程,配合前面讲的xdist插件
    pytest --reruns 3 --reruns-delay 1 test_demo.py                #失败重复运行3次,每次1s间隔,配合前面讲的pytest-rerunfailures插件
    pytest --html=report.html --self-contained-html test_demo.py   #输出测试报告,配合前面讲的pytest-html插件
    pytest --alluredir ./result/ test_demo.py                      #输出allure报告数据到result目录,配合前面讲的allure-pytest插件
    

    注:以上运行参数可以互相组合使用。

  • 指定用例

    pytest -s testsuit/                                            #指定文件夹下所有用例运行
    pytest -s testsuit/test_demo.py                                #指定测试文件所有用例运行
    pytest -s testsuit/test_demo.py::TestCase                      #指定测试类的所有用例运行,文件内用::连接
    pytest -s testsuit/test_demo.py::TestCase::test_case_01        #指定单个测试用的所有用例运行
    

3.【通过main函数运行】

除了命令行运行,我们可以使用函数来调用执行测试用例。

  • 语法:

    pytest.main(args=None, plugins=None)  #传参数列表,如['-s','test_demo.py']
    
  • 参数:

    args 为运行测试的一些参数,和命令行运行时的参数相同,在列表 List 里以字符串 str 的形式,多参数以 “,” 隔开,也可以传入测试case的路径。

    plugins 为插件参数,也是列表形式,是运行 pytest 时运行下载的插件的参数。

  • 代码示例

    pytest.main('-v','test_demo.py')
    

4.【通过pytest.ini运行】

最后一种也是最常用的一种方式,就是在 pytest.ini 文件中配置 pytest 的运行参数。

pytest.ini 是优先级最高的一种运行方式,可以改变pytest的默认运行方式。
可以使用 pytest -h 查看 pytest.ini 文件的参数。

下节课做详细介绍。

标签:19,demo,py,pytest,用例,Pytest,test,运行
From: https://www.cnblogs.com/ckxingchen/p/17057222.html

相关文章

  • 5. Pytest自定义前置后置:fixture参数详解(了解)
    一、前言我们上节课讲到fixture自定义前置函数的时候,有5个非必填参数,scope,params,autouse,ids,name。一般情况下这五个参数我们在工作中都不常用,但是个别情况会用到,这节......
  • 4. Pytest自定义前置后置:fixture简单应用
    一、前言前面讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现指定某一个执行前置,另一个不执行前置,则需......
  • 6.Pytest参数化:parametrize简单应用
    一、前言参数化的目的是为了使测试用例代码与测试数据进行分离,这样,测试人员只需要维护测试数据,而不用更改代码。pytest模块给我们提供了专门用来参数化的装饰器:@pytest.ma......
  • 7. Pytest参数化:parametrize参数详解(了解)
    一、前言上节课我们讲解了如何用parametrize装饰器进行参数化,它有5个参数,argnames,argvalues,indirect,ids,scope,本节课针对这五个参数做详细讲解。二、学习目标1.a......
  • 9. Pytest标记预计失败的用例:xfail
    一、前言我们现在要学的pytest.xfail()和pytest.skip()有些相似,只不过他的含义是:将该用例标记成xfail失败,并且该用例中的后续代码不会执行。二、学习目标[email protected]......
  • 8. Pytest跳过某个测试用例:skip和skipif
    一、前言skip和skipif,看名字就是跳过测试的意思,主要用于不想执行的代码,标记后,标记的代码不执行。希望满足某些条件才执行某些测试用例,否则pytest会跳过运行该测试用例......
  • 11. Pytest常用插件:pytest-ordering调整用例执行顺序
    一、前言在pytest中,测试用例的默认执行顺序是从上到下执行的,但是有时候我们会有这样的需求,就是打乱测试用例的执行顺序来达到某个测试效果,这时候就需要用到Pytest中的一个......
  • 10. Pytest设置用例标签:mark
    一、前言mark主要用来标记用例,通过不同的标记实现不同的运行策略。一个大项目自动化用例时,可以划分多个模块,也可以使用标记功能,标明哪些是模块1用例,哪些是模块2的,运行代码......
  • 13. Pytest常用插件:pytest-repeat重复运行用例
    一、前言上面我们介绍了当用例失败时的重复运行,其实我们在实际工作中还会遇到一种情况,我们就是单纯的想让某条用例重复运行指定的次数。平常在做功能测试的时候,经常会遇......
  • 12. Pytest常用插件: pytest-rerunfailures失败用例重跑
    一、前言测试环境不稳定偶发接口超时(和服务无关,纯粹是环境问题),然后执行接口case也因此偶发失败。比如同一个接口case跑五次,其中有两次失败,另外三次都是成功的,这种偶发性的......