У меня есть тест, который зависит от других тестов, чтобы закончить. Но по какой-то причине, какое бы соглашение об именовании я ни использовал, я не могу заставить pytest запустить тест в указанном мной порядке.
Например, тест B зависит от теста A
Теперь в моемФреймворк Test B идет после Test A, но тест B выполняется первым, а порядок не поддерживается.
Это из-за некоторой функциональности pytest, поскольку, поскольку Test A содержит цикл, который выполняется в течение нескольких минут, pytest решаетсначала запустите другие тесты, прежде чем запускать тест, который занимает больше времени.
def test_tcm_validateSetDeployedInProduction():
maxTries = 30
number_of_retry = 0
for id in setId:
while True:
response = pytest.tcm.get_deployment_status(id)
prodStatus = pytest.tcm.deploymentStatus(response.json(), 'production')
if prodStatus != 'DEPLOYED' and number_of_retry < maxTries:
time.sleep(60)
number_of_retry += 1
continue
break
assert 'DEPLOYED' == prodStatus
def test_tcm_validateSetOnceDeploymetIsComplete(TCM_responseStatus_data):
global versionNumber
global getResponseList
global setId
global d
for i, id in enumerate(setId):
response = pytest.tcm.get_TCM_enrollment(id)
assert_valid_schema(response.text, "GetSetSchema.json")
assert TCM_responseStatus_data['positive_status_code_get'] == response.status_code, 'status code of response should be 200'
assert True == response.json()["deployment"]["staging"]
assert getResponseList[i]['chains'] == response.json()['chains'][::-1]
assert getResponseList[i]['name'] == response.json()['name']
Теперь test_tcm_validateSetOnceDeploymetIsComplete всегда выполняется перед test_tcm_validateSetDeployedInProduction.