मैं मोचा और WebDriverJS का उपयोग करके एक वेब एप्लिकेशन का परीक्षण कर रहा हूं, here के रूप में कम से कम। जब परीक्षण पास होते हैं, सब कुछ ठीक है। हालांकि, अगर एक परीक्षण विफल रहता है, तो सूट में शेष परीक्षण टाइमआउट होंगे और धावक वेबड्राइवर इंस्टेंस को बंद किए बिना सूट के अंत में बाहर निकल जाएगा। उदाहरण परीक्षण का मामला:Node.js + mocha + webdriverjs: असफल परीक्षण सुइट को मारने
var assert = require('assert'),
client = require("webdriverjs").remote({
logLevel: 'silent'
});
describe('Self-test', function() {
before(function(done) {
client
.init()
.url('http://www.wikipedia.org/', function() {
done();
});
});
after(function(done) {
client.end(function() {
done();
});
});
// tests
it('should fail properly', function(done) {
client.getTitle(function(result) {
assert(false, 'This should fail');
done();
});
});
it('should pass afterwards', function(done) {
client.getTitle(function(result) {
assert(true, 'This should still pass');
done();
});
});
});
उत्पादन:
~> mocha test/self-test.js
Self-test
1) should fail properly
2) should pass afterwards
3) "after all" hook
✖ 3 of 2 tests failed:
1) Self-test should fail properly:
AssertionError: This should fail
at null.<anonymous> (./test/self-test.js:24:17)
at QueueItem (./node_modules/webdriverjs/lib/webdriverjs.js:242:15)
at null.<anonymous> (./node_modules/webdriverjs/lib/commands/getTitle.js:12:6)
at QueueItem (./node_modules/webdriverjs/lib/webdriverjs.js:242:15)
at IncomingMessage.WebdriverJs.proxyResponse (./node_modules/webdriverjs/lib/webdriverjs.js:782:6)
at IncomingMessage.EventEmitter.emit (events.js:115:20)
at IncomingMessage._emitEnd (http.js:366:10)
at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23)
at Socket.socketOnData [as ondata] (http.js:1366:20)
at TCP.onread (net.js:402:27)
2) Self-test should pass afterwards:
Error: timeout of 10000ms exceeded
at Object.<anonymous> (./node_modules/mocha/lib/runnable.js:158:14)
at Timer.list.ontimeout (timers.js:101:19)
3) Self-test "after all" hook:
Error: timeout of 10000ms exceeded
at Object.<anonymous> (./node_modules/mocha/lib/runnable.js:158:14)
at Timer.list.ontimeout (timers.js:101:19)
जहां तक मेरा बता सकते हैं, इस वजह से WebDriverJS कतार ठप हो जाता है जब एक परीक्षण विफल रहता है। क्या इसे ठीक करने का कोई तरीका है? यह स्थानीय कमांड लाइन परीक्षण के लिए भी उप-इष्टतम है, और यह पृष्ठभूमि को स्वचालित रूप से और/या पृष्ठभूमि में मुश्किल से असंभव बनाता है।
अद्यतन: मैं मैं हर परीक्षा के लिए एक नए ग्राहक instantiating द्वारा कतार विफलता ठीक कर सकते हैं लगता है, लेकिन यह बातें ज्यादा गति धीमी हो जाएगी (जैसा कि WebDriver उदाहरण खरोंच से हर बार शुरू करने की आवश्यकता होगी) और छोड़ना होगा परीक्षण विफलता पर अकुशल चारों ओर लटकने वाली वेबड्राइवर प्रक्रियाएं। आदर्श रूप से, मुझे Soda द्वारा प्रदान की गई संरचना की तरह कुछ चाहिए, जहां कतार में कहीं भी विफलता कतार के अंत तक जाती है और फिर परीक्षण ढांचे को पकड़ने के लिए त्रुटि फेंकता है।
इस दृष्टिकोण के साथ एकमात्र अंतर यह है कि परीक्षण पहले परीक्षण के बाद लटकता है, 'बाद में' पर समाप्त होता है, और दूसरा परीक्षण कभी नहीं चलता है। मुद्दा वही है। – nrabinowitz
क्या होता है जब आप 'बाद()' का उपयोग नहीं करते हैं और इसके बजाय बस 'संलग्न करते हैं।प्रत्येक परीक्षण में 'क्लाइंट' ऑब्जेक्ट को कॉल करें() 'कॉल करें? आपने अनिवार्य रूप से दो एपीआई के बीच एसिंक नरक पर ठोकर खाई है, लेकिन इसे कुछ मामूली बदलावों के साथ ठीक किया जाना चाहिए। – srquinn
इच्छा है कि मैं और अधिक मदद कर सकता हूं, लेकिन सेलेनियम सर्वर तक पहुंच के बिना मुझे चलाने के लिए परीक्षण नहीं मिल सकते हैं। – srquinn