一、前言

我们在前面的内容中其实已经讲解了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 文件的参数。

下节课做详细介绍。