Pytest自动化测试框架常用参数

一、常用参数

1.指定执行文件/用例

不带参数,仅带文件名/文件相对路径/文件绝对路径

测试文件::测试类:执行指定类

测试文件::测试类::用例:执行指定用例


2.短命令选项

-v:输出详细信息

-q:简化输出信息

-k:根据关键字表达式执行

-x:失败则退出执行

-m 别名:只执行被标记的用例、

-s:输出调试信息,包括print打印信息


3.长命令选项

--durations=n:统计执行速度最慢的用例,值为0时,统计后由大到小排序

--maxfail=num:指定执行失败最大次数,超过则停止执行

--reruns n:失败用例重跑n次

--tb=no/line/short/long/native/auto:设置输出失败时打印的信息的显示

 

二、指定执行文件/用例

01指定文件执行

指定文件执行语法:pytest 文件名注:执行文件两种方式,进入文件所在的目录,或者带上文件的绝对或相对路径

# 已在test.py文件所在目录,指定执行test_1.py的文件
pytest test_1.py

# 带上文件的相对路径
pytest /xxx/test_1.py

#带上文件的绝对路径
pytest D:/xxx/test_1.py

  


02测试文件::测试类:执行指定类

测试文件::测试类:执行指定类

class TestClass:
    def test_1(self):
        assert 2 == 2
        
    def test_2(self):
        assert 3 == 3



pytest test_1.py::TestClass

   

03测试文件::测试类::用例:执行指定用例

测试文件::测试类::用例:执行指定用例

class TestClass:
    def test_1(self):
        assert 2 == 2
        
    def test_2(self):
        assert 3 == 3



pytest test_1.py::TestClass::test_2

   

三、短命令选项

01 -v

-v:输出详细的信息

class TestClass:
    def test_1(self):
        assert 1 == 2

    def test_2(self):
        assert 2 == 2


pytest -v

  

02-q

-q:与-v正好相反,简化输出信息

class TestClass:
    def test_1(self):
        assert 1 == 2

    def test_2(self):
        assert 2 == 2


pytest -q

  

03-k

-k:执行用例包含某个关键字

语法:pytest -k "类名/方法名/类名 and not 方法名"

备注:这里的类名和方法名可模糊匹配,包含该类名的关键字和方法名的关键字符合规则即可

class TestClass:
    def test_1(self):
        assert 1 == 2

    def test_2(self):
        assert 2 == 2



# 执行TestClass测试类下的所有方法
pytest -k "TestClass"


# 执行test_2测试用例
pytest -k "test_2"


# 匹配类名或方法名包含关键字“test”的用例执行
pytest -k "test"


# 执行TestClass测试类下的方法,除了test_1
pytest -k "TestClass and not test_2"

  

04-x
-x:失败则退出执行
执行t包含两个用例,执行test_1用例失败后退出,不再执行test_2用例

class TestClass:
    def test_1(self):
        assert 1 == 2

    def test_2(self):
        assert 2 == 2


pytest -x

  

05-m

-m 别名:只执行被标记的用例

import pytest

class TestClass:
    def test_1(self):
        assert 1 == 2

    # 用例标记为“base”
    @pytest.mark.base
    def test_2(self):
        assert 2 == 2


pytest -m base


备注:运行有告警信息,什么原因呢?
原因:主要是我们设置的标签没有注册,虽然可以运行,但是会报告警信息。
前面我们有说过pytes的执行规则,默认执行test_开头的用例,但是如果不想要根据默认的规则来执行,我们可以通过注册标签,并且在用例上打标签,然后再运行指定标签相关的用例执行。
解决方案:将标签通过pytest.ini的配置文件注册下即可,新建一个pytest.ini的文件,按以下的格式注册标签:
注意:pytest.ini 文件中只能用纯英文字符,不能使用中文,包括中文格式的冒号和空格

[pytest]
markers = 
        base:冒号后添加可选描述,这里的描述用英文描述,禁止使用中文描述

  

06-s

-s:表示输出调试信息,包括print打印信息

import pytest

class Test1:
    def test_1(self):
        assert 1 < 2
        print("这是打印信息")


pytest -s

  

四、长命令选项

01--duration

--durations=n:统计执行速度最慢的n条用例,值为0时,显示所有用例的执行时间,统计后由大到小排序

class TestClass:
    def test_1(self):
        assert 1 == 2

    def test_2(self):
        assert 2 == 2


# duratons值为1时,统计执行速度最慢的1条用例
pytest --durations=1

  

02--maxfail

--maxfail=num:指定执行失败最大次数,超过则停止执行

class TestClass:
    def test_1(self):
        assert 1 == 2

    def test_2(self):
        assert 2 == 3

    def test_3(self):
        assert 3 == 4


pytest --maxfail=2

  

03--tb

--tb=no/line/short/long/native/auto:设置失败时打印的信息的显示方式

  • --tb=no:不显示失败时的回溯信息,也就是没有FAILURES片段内容
  • --tb=auto:默认值,仅打印第一个以及最后一个测试用例的回溯信息
  • --tb=line:隐藏失败时其他的回溯信息,只显示用例执行失败的位置
  • --tb=short:简化输出失败时的回溯信息,仅显示报错的代码,不显示非报错代码
  • --tb=long:输出失败时更为详细的回溯信息
  • --tb=native:只显示python标准库的回溯信息
import pytest

class Test:
    def test_1(self):
        assert 1 > 2

--tb=no:不显示失败时的回溯信息,也就是没有FAILURES片段内容
pytest --tb=no

--tb=auto:默认值,仅打印第一个以及最后一个测试用例的回溯信息
pytest --tb=auto

--tb=line:隐藏失败时其他的回溯信息,只显示用例执行失败的位置
pytest --tb=line

--tb=short:简化输出失败时的回溯信息,仅显示报错的代码,不显示非报错代码
pytest --tb=short

--tb=long:输出失败时更为详细的回溯信息
pytest --tb=long

--tb=native:只显示python标准库的回溯信息
pytest --tb=native

  

posted @ 2023-04-28 16:51  北京测试菜鸟  阅读(213)  评论(0编辑  收藏  举报