Pytest_基础知识

2021-07-06  本文已影响0人  Gakki0725
作者:Gakki

01 Pytest 用例规则

Pytest 可以在不同的函数、包中发现用例,发现的规则如下:

02 Pytest 运行方式

  1. 单独执行某一个 py 文件里所有的用例:
    pytest test_login.py

  2. 执行目录下所有的用例:
    pytest testcase/

  3. 单独执行某个用例

以函数形式的用例
pytest test_login.py::test_login
 
以类形式的用例
pytest test_login.py::TestClass::test_login

03 setup 和 teardown 函数

  1. setup和teardown主要分为:模块级,类级,功能级,函数级。
  2. 存在于测试类内部

函数级别:运行于测试方法的始末,即:运行一次测试函数会运行一次 setupteardown
类级别:运行于测试类的始末,即:在一个测试内只运行一次 setup_classteardown_class ,不关心测试类内有多少个测试函数。

04 装饰器之 Fixture

Fixture 装饰器的用途:

  1. 做测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用Fixture来实现。
  2. 测试用例的前置条件可以使用Fixture实现,比直接使用Pytest框架的setup()和teardown()函数更加灵活。
  3. Fixture是Pytest用于将测试前后进行预备,清理工作的代码分离出核心测试逻辑的一种机制。
  4. Fixture可以实现Unittest不能实现的功能,比如:Unittest中的测试用例和测试用例之间是无法传递参数和数据的,但是Fixture却可以解决这个问题。

Fixture 参数说明:
fixture(scope="function", params=None, autouse=False, ids=None, name=None):

入参说明:

import pytest
# 1.py
@pytest.fixture(scope='module', autouse=True)
def test1():
    print('\n开始执行module')
@pytest.fixture(scope='class', autouse=True)
def test2():
    print('\n开始执行class')
@pytest.fixture(scope='function', autouse=True)
def test3():
    print('\n开始执行function')
def test_a():
    print('---用例a执行---')
def test_d():
    print('---用例d执行---')
class TestCase:
    def test_b(self):
        print('---用例b执行---')
    def test_c(self):
        print('---用例c执行---')
if __name__ == '__main__':
    pytest.main(['-s', '1.py'])

输出结果:

collected 4 items

1.py 
开始执行module

开始执行class

开始执行function
---用例a执行---
.
开始执行class

开始执行function
---用例d执行---
.
开始执行class

开始执行function
---用例b执行---
.
开始执行function
---用例c执行---
.

============================== 4 passed in 0.04s ==============================

05 跳过(Skip)及预期失败(xFail)

根据特定条件,不执行标识的测试函数。

跳过执行测试函数

自定义@pytest.mark.skip()标签

标记为预期失败函数

使用xfail标记指示你希望测试失败。运行用例的时候,在失败时不会报告回溯。相反,终端报告会将其列在“预期失败”(XFAIL)或“意外传递”(XPASS)部分中。

06 装饰器之 mark

函数数据参数化,方便测试函数对测试数据的获取。

07 pytest 参数

上一篇 下一篇

猜你喜欢

热点阅读