Pytest всегда запускает тест, который занимает больше времени, чтобы закончить в конце, что портит порядок - PullRequest
0 голосов
/ 16 октября 2019

У меня есть тест, который зависит от других тестов, чтобы закончить. Но по какой-то причине, какое бы соглашение об именовании я ни использовал, я не могу заставить 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...