Pytest

Posted 粥雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pytest相关的知识,希望对你有一定的参考价值。

Pytest - 配置文件 pytest.ini

前言

  • pytest.ini 配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行。
  • 作用:可以改变 pytest 的默认行为;
  • 位置:一般放在项目的根目录(即当前项目的顶级文件夹下);
  • 命名:pytest.ini,不能使用任何中文符号,包括汉字、空格、引号、冒号等等;
  • 注意:格式一般是固定的,建议不要输入中文;
  • 主要用途:
    • 用例标记
    • 更改默认命令行选项
    • 控制台实时输出日志
    • 测试用例收集过滤
    • 更改测试用例收集规则

marks

  • 作用:测试用例中添加了 @pytest.mark.webtest 装饰器,如果不添加 marks 选项的话,就会报 warnings

  • 格式:list 列表类型

  • 写法:

[pytest]
markers =
    weibo: this is weibo page
    toutiao: toutiao
    xinlang: xinlang

xfail_strict

  • 作用:

    • 设置 xfail_strict = True 可以让那些标记为 @pytest.mark.xfail
    • 预测需要执行失败的用例(xfailed),结果为成功的(xpassed),就会直接显示为失败了(failed);
  • 格式:True 、False(默认),1、0

  • 写法:
[pytest]

xfail_strict = True

  • 例如:
@pytest.mark.xfail
def test_base_001():	
    assert 1==1		# 期望执行失败

@pytest.mark.xfail
def test_base_002():
    assert 1==2		# 期望执行失败

  • 执行结果:
============================= test session starts =============================
collecting ... collected 2 items

# test_base_001 期望执行失败的,但是执行结果为成功,所以用例状态为失败 failed
demo_test.py::test_base_001 FAILED                                       [ 50%]
demo_test.py:11 (test_base_001)
[XPASS(strict)] 


demo_test.py::test_base_002 XFAIL                                        [100%]
@pytest.mark.xfail
 def test_base_002():
>       assert 1==2
E       assert 1 == 2
E         +1
E         -2

demo_test.py:18: AssertionError

======================== 1 failed, 1 xfailed in 0.10s =========================

addopts

  • 作用:

    • addopts 参数可以更改默认命令行选项,这个当我们在 cmd 输入一堆指令去执行用例的时候,就可以用该参数代替了,省去重复性的敲命令工作
    • 每次都这样敲不太现实,addopts 就可以完美解决这个问题
  • 比如:想测试完生成报告,失败重跑两次,一共运行两次,通过分布式去测试,如果在cmd中写的话,命令会很长

    • pytest -v --rerun=2 --count=2 --html=report.html --self-contained-html -n=auto
  • 写法:

[pytest]

# 命令行参数
addopts = -v --reruns=1 --count=2 --html=reports.html --self-contained-html -n=auto

加了 addopts 之后,我们在 cmd 中只需要敲 pytest 就可以生效了!!


log_cli

  • 作用:控制台实时输出日志

  • 格式:

    • log_cli = True 或 False(默认),
    • log_cli =1 或 0
  • 写法:

[pytest]

lgo_cli = True

test

  • 作用:更改测试用例收集规则 / 运行指定用例名称

  • 格式:

    • 模块文件名规则:python_files = 格式/用例名称
    • 测试类名规则:python_classes = 格式/用例名称
    • 测试函数名规则:python_functions = 格式/用例名称
    • 多个用例格式之间使用空格隔开
  • 写法:

[pytest]

python_files =     test_*  *_test  test*
python_classes =   Test*   test*
python_functions = test_01  test_02

『德不孤』Pytest框架 — 4.pytest.ini文件和用例执行的顺序

参考技术A

通过全局的配置文件运行测试用例,这种方式才是在实际企业自动化中的应用方式。(前面三种方式是自己测试的时候使用)

pytest.ini 文件是Pytest的主配置文件,可以改变Pytest的运行方式, pytest.ini 文件的名字是固定的,不能改动。

pytest.ini 文件可以改变Pytest测试框架默认的行为(查找执行测试用例的行为),Pytest会读取 pytest.ini 文件中配置信息,按指定的方式去运行测试用例。

pytest.ini 文件要注意:

下面是最基础的 pytest.ini 文件的编写,如下:

Unittest 测试框架,默认是以用例名的 ascll 大小,来决定测试用例的执行的顺序。

Pytest 测试框架:默认从上到下顺序执行测试用例,也就是文件中先写的谁,谁就先执行。

我们可以通过函数装饰器的⽅式,标记被测试函数来决定用例执⾏的顺序。

需要使用 pytest-ordering 插件。

安装⽅式: pip install pytest-ordering

使⽤⽅法:

示例:

以上是关于Pytest的主要内容,如果未能解决你的问题,请参考以下文章

pytest---pytest.ini配置文件

pytest学习和使用18-pytest.ini配置文件如何使用?

『德不孤』Pytest框架 — 4.pytest.ini文件和用例执行的顺序

pytest-18-配置文件pytest.ini

pytest配置文件pytest.ini

python使用pytest+pytest报告