pytest常见问题

Posted

tags:

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

参考技术A 1.      pytest提示 OSError: [WinError 87] 参数错误

如果是win7系统、python3.7.4以及pytest5.0+,将python降到3.7.3就ok了(亲测有效),另一个是Windows 10, python 3.8.1, pytest 5.3.3,将pytest降到4.6.9以下版本也ok 因此建议你要么降python版本,要么降pytest版本试试。

2.      pytest命令行传参找不到问题

运行脚本增加os.chdir切换到项目脚本所在目录(运行时加载增加对应命令行confgtest.py)

3.      pytest命令行传参找读取为空问题

测试用例test_XX.py,文件独立运行直接命令行传参会导致该问题

其他文件调用时传参正常

4.      pytest PytestUnknownMarkWarning告警

相应标签添加pytest.int 配置文件

这个方法单个标签和多个标签都适用

5.      Pytest日志打印不显示

需要使用命令行参数或者pytest.ini 设置

其中--log-file建议使用命令行拼接绝对路径后传参,配置文件的相对路径受执行文件路径影响,日志路径可能会错误

Pytest日志文件为覆盖写,保留每次命令行执行的日志文件需要文件名不同

This log file is opened in write mode which means that it will be overwritten at each run tests session.

pytest---pytest.ini配置文件

前言

 我们在执行用例的时候,每次都在命令行中输入-v,-s等一些命令行参数的时,比较麻烦。其中pytest.ini这个配置文件可以快速的帮助我们解决这个问题。

配置文件

pytest.ini文件是pytest的主配置文件,可以改变pytest的运行方式,且是一个固定的文件pytest.ini文件,pytest.ini一般存放在项目的根目录中。我们可以打开终端,在终端中输入pytest -h来查看一些pytest.ini参数配置详情,这里的参数比较多,安静只截取一部分。

参数详解

这里面这么多参数可能目前用不上,安静只介绍一个常用的参数信息,比如,我们每次后面跟的参数信息

addopts

addopts:表示可以更改默认命令行选项

[pytest]
# 表示可以更改默认命令行选项
addopts = -v -s

这样我们直接在cmd中执行pytest就会默认加上以上2个参数。将我们print的内容和用例执行结果。

testpaths

testpaths:表示执行用例的目录

[pytest]
addopts = -v -s
testpaths = test_01

在当前目录创建两个文件夹,其中一个是test_01,另一个是test_02目录中均存有用例。通过添加testpaths执行执行测试用例目录为test_01,这样就只会执行test_01下的目录

python_file

python_file:表示执行文件名

[pytest]
addopts = -v -s
testpaths = test_01
python_files = test_01.py

在test_01的目录下存放多个test文件,通过加入python_files来固定确认执行那一个测试文件内容

python_classes

python_classes:表示执行的类名

[pytest]
addopts = -v -s
testpaths = test_01
python_files = test_01.py
python_classes = Test_

在test_01.py文件中写入两个类,不同的类名。这样就只会执行标记的类内容

import pytest

class Test_ini:

    def test01(self):
        print(\'用例01\')

    def test02(self):
        print(\'用例02\')

    def test03(self):
        print(\'用例03\')

class Testini:
    def test_01(self):
        print(\'用例01\')

    def test_02(self):
        print(\'用例02\')

    def test_03(self):
        print(\'用例03\')

if __name__ == \'__main__\':
    pytest.main([\'-s\'])

通过执行,可以看到只执行了Test_的内容

python_functions

python_functions:表示执行方法名内容

[pytest]
addopts = -v -s
testpaths = test_01
python_files = test_01.py
python_classes = Test
python_functions = test_

还是上面的数据,通过执行。

 

通过上面内容,安静简单的将几个常用到的配置文件内容信息列举出来,大家也可以进行下方留言,看看还有哪些比较常用的,可以一起分享出来。

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

安装pytest时遇到的问题及解决方案

pytest 配置文件

(三十)pytest兼容unittest问题

使用pytest执行测试用例遇到的问题

pytest---pytest.ini配置文件

pytest-28-重复执行用例(pytest-repeat)