Pytest框架学习14--pytest.ini

pytest.ini文件是pytest的主配置文件,可以改变pytest的默认行为。

使用pytest --help指令可以查看pytest.ini的设置选项

[pytest] ini-options in the first pytest.ini|tox.ini|setup.cfg file found:

  markers (linelist):   markers for test functions
  empty_parameter_set_mark (string):
                        default marker for empty parametersets
  norecursedirs (args): directory patterns to avoid for recursion
  testpaths (args):     directories to search for tests when no files or
                        directories are given in the command line.
  usefixtures (args):   list of default fixtures to be used with this project
  python_files (args):  glob-style file patterns for Python test module
                        discovery
  python_classes (args):
                        prefixes or glob names for Python test class discovery
  python_functions (args):
                        prefixes or glob names for Python test function and
                        method discovery
  disable_test_id_escaping_and_forfeit_all_rights_to_community_support (bool):
                        disable string escape non-ascii characters, might cause
                        unwanted side effects(use at your own risk)
  console_output_style (string):
                        console output: "classic", or with additional progress
                        information ("progress" (percentage) | "count").
  xfail_strict (bool):  default for the strict parameter of xfail markers when
                        not given explicitly (default: False)
  junit_suite_name (string):
                        Test suite name for JUnit report
  junit_logging (string):
                        Write captured log messages to JUnit report: one of
                        no|system-out|system-err
  junit_log_passing_tests (bool):
                        Capture log information for passing tests to JUnit
                        report:
  junit_duration_report (string):
                        Duration time to report: one of total|call
  junit_family (string):
                        Emit XML for schema: one of legacy|xunit1|xunit2
  doctest_optionflags (args):
                        option flags for doctests
  doctest_encoding (string):
                        encoding used for doctest files
  cache_dir (string):   cache directory path.
  filterwarnings (linelist):
                        Each line specifies a pattern for
                        warnings.filterwarnings. Processed after -W and
                        --pythonwarnings.
  log_print (bool):     default value for --no-print-logs
  log_level (string):   default value for --log-level
  log_format (string):  default value for --log-format
  log_date_format (string):
                        default value for --log-date-format
  log_cli (bool):       enable log display during test run (also known as "live
                        logging").
  log_cli_level (string):
                        default value for --log-cli-level
  log_cli_format (string):
                        default value for --log-cli-format
  log_cli_date_format (string):
                        default value for --log-cli-date-format
  log_file (string):    default value for --log-file
  log_file_level (string):
                        default value for --log-file-level
  log_file_format (string):
                        default value for --log-file-format
  log_file_date_format (string):
                        default value for --log-file-date-format
  addopts (args):       extra command line options
  minversion (string):  minimally required pytest version

常用配置项介绍:

1.marks标记,测试用例中添加了@pytest.mark.webtest装饰器的,运行后仅会运行带标记的用例

[pytest]
markers=webtest:1111111111111 (标签注释)
        hello:22222222222222
        


import pytest


def test_3():
    print(33333333)


@pytest.mark.webtest
def test_4():
    print(444444444444)



(venv) E:\PycharmProject\TestLibrary1\Pytttest\1111>pytest -m=webtest test_22.py -s -v
========================================================================================================== test session starts ===========================================================================================================
platform win32 -- Python 3.7.0, pytest-5.1.3, py-1.8.0, pluggy-0.13.0 -- e:\pycharmproject\testlibrary1\venv\scripts\python3.exe
cachedir: .pytest_cache
rootdir: E:\PycharmProject\TestLibrary1\Pytttest\1111, inifile: pytest.ini
collected 2 items / 1 deselected / 1 selected                                                                                                                                                                                             

test_22.py::test_4 444444444444
PASSED

==================================================================================================== 1 passed, 1 deselected in 0.01s ====================

2.xfail_strict:设置xfail_strict = true可以让那些标记为@pytest.mark.xfail但实际通过的测试用例被报告为失败

import pytest


@pytest.mark.xfail()
def test_3():
    print(33333333)


@pytest.mark.xfail()
def test_4():
    print(444444444444)

没有加xfail_strict = true,运行结果如下:都是xpassed
E:\PycharmProject\TestLibrary1\venv\Scripts\python3.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1.3\helpers\pycharm\_jb_pytest_runner.py" --path E:/PycharmProject/TestLibrary1/Pytttest/1111/test_22.py
Launching pytest with arguments E:/PycharmProject/TestLibrary1/Pytttest/1111/test_22.py in E:\PycharmProject\TestLibrary1\Pytttest\1111
============================= test session starts =============================
platform win32 -- Python 3.7.0, pytest-5.1.3, py-1.8.0, pluggy-0.13.0
rootdir: E:\PycharmProject\TestLibrary1\Pytttest\1111, inifile: pytest.inicollected 2 items

test_22.py X33333333
X444444444444
                                                            [100%]

============================= 2 xpassed in 0.01s ==============================

Process finished with exit code 0

pytest.ini添加xfail_strict = true后:可以看到结果变成failed了
E:\PycharmProject\TestLibrary1\venv\Scripts\python3.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1.3\helpers\pycharm\_jb_pytest_runner.py" --path E:/PycharmProject/TestLibrary1/Pytttest/1111/test_22.py
Launching pytest with arguments E:/PycharmProject/TestLibrary1/Pytttest/1111/test_22.py in E:\PycharmProject\TestLibrary1\Pytttest\1111
============================= test session starts =============================
platform win32 -- Python 3.7.0, pytest-5.1.3, py-1.8.0, pluggy-0.13.0
rootdir: E:\PycharmProject\TestLibrary1\Pytttest\1111, inifile: pytest.inicollected 2 items

test_22.py F33333333

test_22.py:5 (test_3)
[XPASS(strict)] 
F444444444444

test_22.py:10 (test_4)
[XPASS(strict)] 
                                                            [100%]

================================== FAILURES ===================================
___________________________________ test_3 ____________________________________
[XPASS(strict)] 
---------------------------- Captured stdout call -----------------------------
33333333
___________________________________ test_4 ____________________________________
[XPASS(strict)] 
---------------------------- Captured stdout call -----------------------------
444444444444
============================== 2 failed in 0.01s ==============================

Process finished with exit code 0

Assertion failed

Assertion failed

3.addopts参数可以更改默认命令行选项,可以将一些命令添加后就不需要每次命令行执行时都添加

(venv) E:\PycharmProject\TestLibrary1\Pytttest\1111>pytest
========================================================================================================== test session starts ===========================================================================================================
platform win32 -- Python 3.7.0, pytest-5.1.3, py-1.8.0, pluggy-0.13.0
rootdir: E:\PycharmProject\TestLibrary1\Pytttest\1111, inifile: pytest.ini
collected 8 items                                                                                                                                                                                                                         

test_11.py ..                                                                                                                                                                                                                       [ 25%]
test_22.py F.                                                                                                                                                                                                                       [ 50%]
test_autotest.py ..                                                                                                                                                                                                                 [ 75%]
test_login.py .x                                                                                                                                                                                                                    [100%]

================================================================================================================ FAILURES ================================================================================================================
_________________________________________________________________________________________________________________ test_3 _________________________________________________________________________________________________________________
[XPASS(strict)]
---------------------------------------------------------------------------------------------------------- Captured stdout call ----------------------------------------------------------------------------------------------------------
33333333
================================================================================================= 1 failed, 6 passed, 1 xfailed in 0.06s =================================================================================================



添加 addopts=-v -s  后运行代码
(venv) E:\PycharmProject\TestLibrary1\Pytttest\1111>pytest
========================================================================================================== test session starts ===========================================================================================================
platform win32 -- Python 3.7.0, pytest-5.1.3, py-1.8.0, pluggy-0.13.0 -- e:\pycharmproject\testlibrary1\venv\scripts\python3.exe
cachedir: .pytest_cache
rootdir: E:\PycharmProject\TestLibrary1\Pytttest\1111, inifile: pytest.ini
collected 8 items                                                                                                                                                                                                                         

test_11.py::test1 1111111111
PASSED
test_11.py::test2 2222222222
PASSED
test_22.py::test_3 33333333
FAILED
test_22.py::test_4 444444444444
PASSED
test_autotest.py::test_ll 登录中
test_11
PASSED
test_autotest.py::test_l2l 登录中
test_22
PASSED
test_login.py::testlogin 登录失败
PASSED
test_login.py::testchange_name 登录失败
XFAIL

================================================================================================================ FAILURES ================================================================================================================
_________________________________________________________________________________________________________________ test_3 _________________________________________________________________________________________________________________
[XPASS(strict)]
================================================================================================= 1 failed, 6 passed, 1 xfailed in 0.06s =================================================================================================

 

你可能感兴趣的:(Pytest)