Pracuję nad zautomatyzowaniem scenariusza Od końca do końca przy użyciu Mocha. Mam punkt końcowy adresu URL, który ma być odpytany, aż do uzyskania określonej wartości w wynikowej odpowiedzi. Czy jest jakiś sposób to zrobić?Odpytywanie adresu URL do momentu ustawienia określonej wartości w odpowiedzi JSON: Mokka, testowanie integracyjne
Odpowiedz
W ten sposób udało mi się zrobić to z WebdriverIO i Mocha
describe("wait for value in content of page",() => {
it("should be able to wait to value in url",() => {
var max_seconds_to_wait = 10;
var seconds_counter = 0;
var should_continue = true;
while (should_continue) {
browser.url('http://your.url.com');
var response = JSON.parse(browser.getText("body"));
console.log(response)
if (response == 'something') {
should_continue = false;
}
browser.pause(1000);
seconds_counter++;
if (seconds_counter > max_seconds_to_wait) {
throw 'Waiting for json from url timeout error';
}
}
});
});
Tęskniłeś kilka rzeczy: 1) sprawdź odpowiedź ma oczekiwaną wartość 2) wyrzuć błąd w czasie max_seconds_to_wait 3) zmień domyślny limit czasu tylko dla tego testu. Pomysł użycia WebdriverIO jest bardzo fajny! – galkin
Dziękuję za komentarze, zredagowałem odpowiedź. Myślę, że lepszym sposobem na to jest stworzenie funkcji eksportu, która nie znajduje się w teście, jak funkcja użyteczności, a następnie łatwiej będzie przekazać tej funkcji niezbędny time_to_wait. – satlosb
Przykład z request i podejście callback:
:const request = require('request');
describe('example',() => {
it('polling', function (done) {
this.timeout(5000);
let attemptsLeft = 10;
const expectedValue = '42';
const delayBetweenRequest = 100;
function check() {
request('http://www.google.com', (error, response, body) => {
if (body === expectedValue) return done();
attemptsLeft -= 1;
if (!attemptsLeft) return done(new Error('All attempts used'));
setTimeout(check, delayBetweenRequest);
});
}
check();
});
});
Przykład z got i async/podejście czekają
const utils = require('util');
const got = require('got');
const wait = utils.promisify(setTimeout);
describe('example',() => {
it('polling', async function (done) {
this.timeout(5000);
const expectedValue = '42';
const delayBetweenRequest = 100;
for (let attemptsLeft = 10; attemptsLeft; attemptsLeft -= 1) {
const resp = await got.get('http://www.google.com');
if (resp.body === expectedValue) return done();
await wait(delayBetweenRequest);
}
done(new Error('All attempts used'));
});
});
- 1. Testowanie integracyjne w CakePHP 2.0
- 2. Schemat adresu URL "Ustawienia otwarte" ios
- 3. Konwersja adresu URL do wersji JSON?
- 4. Jak uzyskać wartości odpowiedzi url w Asp.NET
- 5. Przeczytaj JSON z adresu URL
- 6. HQL: odpytywanie wartości java.util.Map
- 7. Spring Boot + Cloud | Zuul Proxy | Testowanie integracyjne
- 8. .NET: Sprawdź kod statusu odpowiedzi adresu URL?
- 9. Zapisz JSON wyprowadzony z adresu URL do pliku
- 10. Testowanie odpowiedzi w pliku node.js?
- 11. JSON: Uzyskanie wpisu o określonej wartości
- 12. Testowanie integracyjne WPROWADZENIE całego obiektu do kontrolera Spring MVC
- 13. Testowanie w piaskownicy Paypal - zmiana punktu końcowego adresu URL?
- 14. Przypisywanie wartości nazwanego adresu URL do zmiennej w szablonach Django
- 15. Ważny JSON w odpowiedzi
- 16. HTTP GET odpowiedzi z adresu URL za pomocą C#
- 17. Pobieranie danych JSON adresu URL w MS Access
- 18. Obsługa adresu URL RESTful URL
- 19. Retrofit 2 - parametr zapytania adresu URL
- 20. ProxyHTML do przepisania adresu URL
- 21. Przekieruj do poprzedniego adresu URL?
- 22. Ciągłe testowanie integracyjne dla Ruby on Rails z Jenkinsem
- 23. Testy integracyjne dla fullCalendar
- 24. Jak uzyskać adres URL odpowiedzi w XMLHttpRequest?
- 25. Znajdowanie adresu URL LDAP?
- 26. Jak przekazać wiele wartości dla pojedynczego parametru adresu URL?
- 27. Jak pobrać plik do określonej ścieżki z podanego adresu URL w postaci okna?
- 28. Przekierowanie do adresu URL w kolbie
- 29. Dane POST do adresu URL w PHP
- 30. Niedozwolone znaki w odpowiedzi JSON
sprawdź ten jeden https://github.com/ilikebits/gallop –
Jak zapewnić autoryzację dla żądania GET, a także otrzymuję TypeError: Nie można odczytać właściwości "subscribe" o niezdefiniowanym błędzie –
czy znasz programowanie gniazda z węzłem? – Salman