Я запускаю пару тестов, в которых я обращаюсь к другим функциям, чтобы выполнить проверку, вернуться к сценарию и выполнить дальше.
Пример:
Given url Admin
And def name = '1-' + now()
And json myReq = read('Swagger-AuthThrottling.json')
And set myReq.swagger.info.title = title
And def basepath = 'country' + now()
And set myReq.swagger.basePath = basepath
And request myReq
When method post
Then status 200
And def APPIDFromPublisher = call read('classpath:examples/Services/GetAPIIDFromPublisher.feature') {'title': '#(title)' }
And def APIIDPub = APPIDFromPublisher.APIIDPub
And def utils = Java.type('examples.Publisher.AddAdvancedThrottlingPolicy')
And def result = utils.main(title)
And def APPIDFromStore = call read('classpath:examples/Services/GetAPIIDFromStore.feature') {'title': '#(title)' }
And def APIIDStr = APPIDFromStore.APIIDStr
And print 'APPIDFromStore for Qantas Gateway API: ' , APPIDFromStore.APIIDStr
Я запускаю много тестов с такой структурой с 5 потоками.
Теперь я не уверен, как работают потоки при выполнении таких тестов.
Насколько я понимаю, когда я начинаю выполнение, должно быть выбрано 5 тестовых случаев, и один поток не должен покидать тест в любой момент, пока он не будет завершен. Поэтому в идеале я должен видеть 5 параллельных тестов, и как только эти 5 тестов будут завершены тогда следующие 5 должны быть подобраны.
Но на самом деле происходит следующее: 5 потоков выбирают 5 тестовых случаев, но, по-видимому, оставляют тесты посередине (подозревая, что они остаются в точке, где я вызываю другую функцию в середине теста), и выбирают еще один новый тест. из следующего слота, а затем какого-то другого потока или, может быть, того же потока, снова берет наполовину выполненный тест, чтобы завершить его.
Итак, в заключение, при 5 параллельных потоках я в идеале хотел видеть только 5 тестов, которые начинаются и заканчиваются от конца к концу, и только после этого должны быть выбраны следующие 5 тестов.
Но в действительности я вижу 5 тестов, запущенных в начале выполнения, но затем постепенно он накапливается с большим количеством тестов, а затем случайным образом завершает выполнение для всех тестов.
Хотя полное выполнение не завершается неудачей из-за случайного выбора и отбрасывания тестов потоками, но он загружает мой магазин множеством API (мои тесты в основном регистрируют API в Магазине), что снижает производительность магазина.
Было бы здорово узнать больше о функционировании потоков и найти решение для этого.