Ich versuche, Dramatiker /PyTest -API -Tests zu spielen. Verwendete maßgefertigte Dekorationsmethode, um sie für die Parametrisierung verfügbar zu machen
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
Jetzt habe ich Daten mit @dict_parametrize (test) erstellt und @pytest.mark.parameter (dic_data) zur Parametrisierung verwendet und sie für die Testmethode für den API -Aufruf verwendet.
In meiner Testdatei habe ich geschrieben < /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>
Einige, wie ich nicht in der Lage bin, es hier zu handhaben. Ich muss die API_REQUEST_CONTEXT als Parameter übergeben, damit ich die API -Anforderung senden kann. < /p>
Ich habe auch versucht, den api_request_context mit @dict_parametrises (test, api_request_context) < /p>
zu übergebenand 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>
und
Meine neue Testmethode werden wie -< /p>
def test_TC(TC_NAME,BODY,EXPECTED,api_request_context)
< /code>
, aber ich erhalte den Apicontext nicht richtig < /p>
Jetzt muss ich mit mehreren Werten für einen einzelnen API -Endpunkt mit @pyTest.mark testen .Parametrize so, dass ich in meinem Ergebnis jeden Anruf als separater Test in meinem Ergebnis erhalte. < /p>
test_TC(TC_NAME1)---- PASS
test_TC(TC_NAME2)---- PASS
test_TC(TC_NAME3)---- PASS
Ich versuche, Dramatiker /PyTest -API -Tests zu spielen. Verwendete maßgefertigte Dekorationsmethode, um sie für die Parametrisierung verfügbar zu machen[code] 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
[/code] Jetzt habe ich Daten mit @dict_parametrize (test) erstellt und @pytest.mark.parameter (dic_data) zur Parametrisierung verwendet und sie für die Testmethode für den API -Aufruf verwendet. In meiner Testdatei habe ich geschrieben < /p> Test.py [code]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
#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> Einige, wie ich nicht in der Lage bin, es hier zu handhaben. Ich muss die API_REQUEST_CONTEXT als Parameter übergeben, damit ich die API -Anforderung senden kann. < /p> Ich habe auch versucht, den api_request_context mit @dict_parametrises (test, api_request_context) < /p> zu übergebenand 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> und Meine neue Testmethode werden wie -< /p> def test_TC(TC_NAME,BODY,EXPECTED,api_request_context) < /code> , aber ich erhalte den Apicontext nicht richtig < /p> Jetzt muss ich mit mehreren Werten für einen einzelnen API -Endpunkt mit @pyTest.mark testen .Parametrize so, dass ich in meinem Ergebnis jeden Anruf als separater Test in meinem Ergebnis erhalte. < /p> test_TC(TC_NAME1)---- PASS test_TC(TC_NAME2)---- PASS test_TC(TC_NAME3)---- PASS [/code]
Ich verwende JUNIT 5's @ParameterizedTest Annotation, um Tests mit unterschiedlichen Eingaben auszuführen, und ich möchte für jeden Test ein separates temporäres Verzeichnis erstellen. So sieht mein...
Ich arbeite derzeit daran, eine App zu entwickeln, die von einer Chating -App über AccessilitySerivce Paket von einer Chat -App abgerufen wird.
Ich habe gelernt Traversalfunktion,...
Ich arbeite derzeit daran, eine App zu entwickeln, die von einer Chating -App über AccessilitySerivce Paket von einer Chat -App abgerufen wird.
Ich habe gelernt Traversalfunktion,...
Ich habe die folgende SQL-Zeichenfolge:
SELECT fm.*,
u.username AS friend_username
FROM friend_messages fm
JOIN users u ON
(u.id = fm.sender_id AND fm.sender_id = :friendId)
OR
(u.id =...
Ich habe die folgende SQL-Zeichenfolge:
SELECT fm.*,
u.username AS friend_username
FROM friend_messages fm
JOIN users u ON
(u.id = fm.sender_id AND fm.sender_id = :friendId)
OR
(u.id =...