← 输入框|github.com|刷新
Skip to content

fixtures do not record dependencies on other fixtures #929

Open

Description

@maxnoe

Example:

import pytest
import allure


def func(n):
    return n**2


@pytest.fixture()
def input_data():
    with allure.step("Prepare input data"):
        data = 5

    return data


@pytest.fixture()
def compute_job(input_data):

    with allure.step("Compute result"):
        result = func(input_data)

    return result


def test(compute_job):

    with allure.step("Verify result"):
        assert compute_job == 25

In this case, allure output json files contain no information that allows to deduce that the compute_job fixture depends on the input_data fixture.

Since they are fast, time ordering is not possible in most cases, since times are only recorded as integer seconds.

The allure report then shows the two fixtures in the wrong order:

Image

Output json files:

Details

allure/404698a7-6d47-46ee-951e-f1370a8ae247-container.json

{
  "uuid": "a00b000b-e3bf-4599-b1fe-f99a4d9265fb",
  "children": [
    "cb8afcb4-86c9-4ec5-b7c1-def3c168afde"
  ],
  "befores": [
    {
      "name": "compute_job",
      "status": "passed",
      "steps": [
        {
          "name": "Compute result",
          "status": "passed",
          "start": 1791292365354,
          "stop": 1791292365354
        }
      ],
      "start": 1791292365354,
      "stop": 1791292365354
    }
  ],
  "afters": [
    {
      "name": "compute_job::<lambda>",
      "start": 1791292365355
    }
  ],
  "start": 1791292365354,
  "stop": 1791292365355
}

allure/b068721b-3ae1-4959-9376-e840e763dbee-container.json

{
  "uuid": "76f7b786-56ff-4b9b-9931-98c632f44c92",
  "children": [
    "cb8afcb4-86c9-4ec5-b7c1-def3c168afde"
  ],
  "befores": [
    {
      "name": "input_data",
      "status": "passed",
      "steps": [
        {
          "name": "Prepare input data",
          "status": "passed",
          "start": 1791292365354,
          "stop": 1791292365354
        }
      ],
      "start": 1791292365354,
      "stop": 1791292365354
    }
  ],
  "afters": [
    {
      "name": "input_data::<lambda>",
      "start": 1791292365355
    }
  ],
  "start": 1791292365354,
  "stop": 1791292365355
}

allure/a16a30e1-80d0-4a0e-8dda-54c1cbbb5157-result.json

{
  "name": "test",
  "status": "passed",
  "steps": [
    {
      "name": "Verify result",
      "status": "passed",
      "start": 1791292365355,
      "stop": 1791292365355
    }
  ],
  "start": 1791292365355,
  "stop": 1791292365355,
  "uuid": "cb8afcb4-86c9-4ec5-b7c1-def3c168afde",
  "historyId": "761acda85279d873545739563f5f4cb2",
  "testCaseId": "761acda85279d873545739563f5f4cb2",
  "fullName": "test_example#test",
  "labels": [
    {
      "name": "suite",
      "value": "test_example"
    },
    {
      "name": "host",
      "value": "max-desktop"
    },
    {
      "name": "thread",
      "value": "980504-MainThread"
    },
    {
      "name": "framework",
      "value": "pytest"
    },
    {
      "name": "language",
      "value": "cpython3"
    },
    {
      "name": "package",
      "value": "test_example"
    }
  ],
  "titlePath": [
    "test_example.py"
  ]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions