Как перенести параметризованные значения, а также apicontext с тестированием, чтобы я получил отдельный результатPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как перенести параметризованные значения, а также apicontext с тестированием, чтобы я получил отдельный результат

Сообщение Anonymous »

Я пытаюсь разыграть вокруг тестирования API Playwright /Pytest. Используемый метод пользовательского декоратора, чтобы сделать его доступным для параметризации < /p>
commonlib.py

def dict_parametrizes(test_data):
"""Custom decorator to parametrize a test function from a dictionary with custom IDs."""
def decorator(test_func):
test_cases = [(tc_name, data["Body"], data["expected"]) for tc_name, data in test_data.items()]
test_ids = [tc_name for tc_name, _, _ in test_cases] # Create a list of IDs
@pytest.mark.parametrize(
"TC_NAME, BODY, EXPECTED",
test_cases,
ids=test_ids # Use the custom IDs
)
def wrapper(TC_NAME, BODY, EXPECTED, *args, **kwargs):
return test_func(TC_NAME, BODY, EXPECTED, *args, **kwargs)
return wrapper
return decorator

def extract_data_from_excel(file, Worksheet, TC_NAME, BODY, "EXPECTED):
#implementation
return testdats_dictionary

def get_user_information(api_request_context, access_token):
#implementation
return userinfo


Теперь я подготовил данные с использованием @dict_parametrizes (test) и использовал @pytest.mark.parameter (dic_data) для параметризации и использовал их для метода испытаний для вызова API.
В моем тестовом файле я написал < /p>
test.py
import json
import sys
import os
from typing import Generator
from playwright.sync_api import Playwright, APIRequestContext
import pytest
from commonlib import get_auth_token, get_user_information,extract_data_from_excel,dict_parametrizes

#Context Creation
def api_request_context(playwright: Playwright, env) -> Generator[APIRequestContext, None, None]:
...

#setup environment keeping some global values required during testing
@pytest.fixture(scope="session", autouse=True)
def setup_env(api_request_context, env):
global access_token
global userinfo
access_token = get_auth_token(api_request_context, env) # type: ignore
userinfo = get_user_information(api_request_context, access_token) # type: ignore

#Test Case -1
test = extract_data_from_excel("testdata.xlsx", "Solutions", "TC_NAME", "BODY", "EXPECTED")
@pytest.mark.tags("all","regression")
@dict_parametrizes(test) #parameterisation
def test_TC(TC_NAME,BODY,EXPECTED,api_request_context:APIRequestContext,setup_env) -> None:

< /code>
Некоторые, как я не могу понять, как с ним обращаться. Мне нужно передать API_REQUEST_CONTEXT в качестве параметра, чтобы я мог отправлять запрос API. < /p>
Я также пытался передать API_REQUEST_CONTEXT @dict_parametrizes (тест, API_REQUEST_CONTEXT) < /p>
and def dict_parametrizes(test_data,api_request_context):
"""Custom decorator to parametrize a test function from a dictionary with custom IDs."""
def decorator(test_func):
test_cases = [(tc_name, data["Body"], data["expected"]) for tc_name, data in test_data.items()]
test_ids = [tc_name for tc_name, _, _ in test_cases] # Create a list of IDs
@pytest.mark.parametrize(
"TC_NAME, BODY, EXPECTED",
test_cases,
ids=test_ids # Use the custom IDs
)
def wrapper(TC_NAME, BODY, EXPECTED, *args, **kwargs):
return test_func(TC_NAME, BODY, EXPECTED,api_request_context, *args, **kwargs)
return wrapper
return decorator
< /code>
и
Мой новый метод испытаний стал похожим на -< /p>
def test_TC(TC_NAME,BODY,EXPECTED,api_request_context)
< /code>
Но я неправильно получаю Apicontext < /p>
Теперь мне нужно проверить с несколькими значениями для одной конечной точки API с @pytest.mark .parametrize, чтобы в моем результате я получаю каждый вызов в качестве отдельного теста в своем результате. < /p>
test_TC(TC_NAME1)---- PASS
test_TC(TC_NAME2)---- PASS
test_TC(TC_NAME3)---- PASS


Подробнее здесь: https://stackoverflow.com/questions/794 ... he-i-get-s
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»