大佬教程收集整理的这篇文章主要介绍了使用 WebdriverIO 运行 API 测试不会因错误的状态代码而失败。使用 Mocha 运行测试确实失败(如预期),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我编写了一个应该失败的测试。
我正在使用 mocky.io 来模拟我的 API 响应。
当我使用 Supertest & Mocha 运行 API 响应测试并使用 WebdriverIO 启动测试时,它不会失败(我希望它会失败!!)。
如果我直接使用 Mocha 框架运行相同的测试,它确实会失败(正如预期的那样)。
这是我的代码。
测试:
@H_262_15@const @R_607_10613@est = @R_607_10613@ire('supertest'); const { expect } = @R_607_10613@ire('chai'); describe('TEST',() => { it('mocky OK response',(donE) => { @R_607_10613@est('https://run.mocky.io') .get('/v3/dde9652d-d744-4946-8a2e-c18ec7b34a59AAAAA') .expect(200,donE); }); it('mocky 500 response',(donE) => { @R_607_10613@est('https://run.mocky.io') .get('/v3/4fc6a0e6-264e-4d84-bc40-a369a24ff519') .expect(200,donE); }); });
在第一个 IT 块中,我在 URL 末尾添加了 AAAAA,因此返回 404 not found。
在第二个 IT 块中,我期望 200 OK,但模拟 API 已设置为返回 500。
所以两个测试都应该失败!
当我使用 WebdriverIO 运行此代码时,两个测试都通过了。
@H_262_15@ npm run test -- --spec test.Js
来自 package.Json 的片段
@H_262_15@"scripts": { "test": "./node_modules/.bin/wdio wdio.conf.Js",
当我用 Mocha 运行这段代码时,两个测试都失败了(这就是我想要的)
@H_262_15@./node_modules/mocha/bin/mocha test.Js
那么,不知何故 WebdriverIO: 忽略了断言?更改响应?
这是我的 wdio.conf 文件。
@H_262_15@exports.config = { // // ==================== // Runner Configuration // ==================== // // WebdriverIO allows it to run your tests in arbitrary LOCATIOns (e.g. locally or // on a remote machinE). runner: 'local',// // ================== // Specify Test files // ================== // define which test specs should run. The pattern is relative to the directory // from which `wdio` was called. Notice that,if you are calling `wdio` from an // NPM script (see https://docs.npmJs.com/cli/run-script) then the current working // directory is where your package.Json resIDes,so `wdio` will be called from there. // specs: ['./test/**/*.Js'],suites: { testLoginPage: ['./test/testLoginPage/*'],testAddresspage: ['./test/testAddresspage/*'],testusermenuForm: ['./test/testusermenuForm/*'],TESTCreateAddressForm: ['./test/TESTCreateAddressForm/*'],},// Patterns to exclude. exclude: [ // 'path/to/excluded/files' ],// // ============ // CapabilitIEs // ============ // define your capabilitIEs here. WebdriverIO can run multiple capabilitIEs at the same // time. Depending on the number of capabilitIEs,WebdriverIO launches several test // sessions. Within your capabilitIEs you can overwrite the spec and exclude options in // order to group specific specs to a specific capability. // // First,you can define how many instances should be started at the same time. Let's // say you have 3 different capabilitIEs (Chrome,firefox,and Safari) and you have // set maxInstances to 1; wdio will spawn 3 processes. Therefore,if you have 10 spec // files and you set maxInstances to 10,all spec files will get tested at the same time // and 30 processes will get spawned. The property handles how many capabilitIEs // from the same test should run tests. // maxInstances: 10,// // If you have trouble getTing all important capabilitIEs together,check out the // Sauce Labs platform configurator - a great tool to configure your capabilitIEs: // https://docs.saucelabs.com/reference/platforms-configurator // capabilitIEs: [ { // maxInstances can get overwritten per capability. So if you have an in-house SELEnium // grID with only 5 firefox instances available you can make sure that not more than // 5 instances get started at a time. maxInstances: 5,// // browsername: 'Chrome',browsername: 'Chrome','goog:ChromeOptions': { args: ['--window-size=1920,1080','--disable-infobars'].concat( (function () { return process.env.headLESS_Chrome === '1' ? [ '--headless','--no-sandBox','--disable-gpu','--disable-setuID-sandBox','--disable-dev-shm-usage',] : []; })() ),accepTinsecureCerts: true,// If outputDir is provIDed WebdriverIO can capture driver session logs // it is possible to configure which logTypes to include/exclude. // excludeDriverLogs: ['*'],// pass '*' to exclude all driver session logs // excludeDriverLogs: ['BUGreport','server'],],// // =================== // Test Configurations // =================== // define all options that are relevant for the WebdriverIO instance here // // Level of logging verbosity: trace | deBUG | info | warn | error | silent logLevel: 'warn',// // Set specific log levels per logger // loggers: // - webdriver,webdriverio // - @wdio/applitools-service,@wdio/browserstack-service,@wdio/devtools-service,@wdio/sauce-service // - @wdio/mocha-framework,@wdio/jasmine-framework // - @wdio/local-runner // - @wdio/sumologic-reporter // - @wdio/cli,@wdio/config,@wdio/sync,@wdio/utils // Level of logging verbosity: trace | deBUG | info | warn | error | silent // logLevels: { // webdriver: 'info',// '@wdio/applitools-service': 'info' // },// // If you only want to run your tests until a specific amount of tests have Failed use // bail (default is 0 - don't bail,run all tests). bail: 0,// // Set a base URL in order to shorten url command calls. If your `url` parameter starts // with `/`,the base url gets prepended,not including the path portion of your baseUrl. // If your `url` parameter starts without a scheR_63_11845@e or `/` (like `some/path`),the base url // gets prepended directly. baseUrl: url[process.env.ENV],// // Default timeout for all waitFor* commands. waitforTimeout: 5000,// // Default timeout in milliseconds for @R_607_10613@est // if browser driver or grID doesn't send response connectionRetryTimeout: 120000,// // Default @R_607_10613@est retrIEs count connectionRetryCount: 3,// // Test runner services // services take over a specific job you don't want to take care of. They enhance // your test setup with almost no effort. Unlike plugins,they don't add new // commands. Instead,they hook themselves up into the test process. services: ['SELEnium-standalone','intercept'],// Framework you want to run your specs with. // The following are supported: Mocha,Jasmine,and Cucumber // see also: https://webdriver.io/docs/frameworks // // Make sure you have the wdio adapter package for the specific framework installed // before running any tests. framework: 'mocha',// // the number of times to retry the entire specfile when it fails as a whole // specfileRetrIEs: 1,// // Delay in seconds between the spec file retry attempts // specfileRetrIEsDelay: 0,// // Whether or not retrIEd specfiles should be retrIEd immediately or deferred to the end of the queue // specfileRetrIEsDeferred: false,// // Test reporter for stdout. // The only one supported by default is 'dot' // see also: https://webdriver.io/docs/dot-reporter reporters: ['spec'],// // Options to be passed to Mocha. // See the full List at http://mochaJs.org/ mochaOpts: { ui: 'bdd',timeout: 60000,// // ===== // Hooks // ===== // WebdriverIO provIDes several hooks you can use to interfere with the test process in order to enhance // it and to build services around it. You can either apply a single function or an array of // methods to it. If one of them returns with a promise,WebdriverIO will wait until that promise got // resolved to conTinue. /** * Gets executed once before all workers get launched. * @param {Object} config wdio configuration object * @param {Array.<Object>} capabilitIEs List of capabilitIEs details */ // onPrepare: function (config,capabilitIEs) { // },/** * Gets executed before a worker process is spawned and can be used to initialise specific service * for that worker as well as modify runtime environments in an async fashion. * @param {String} cID capability ID (e.g 0-0) * @param {[type]} caps object containing capabilitIEs for session that will be spawn in the worker * @param {[type]} specs specs to be run in the worker process * @param {[type]} args object that will be merged with the main configuration once worker is initialised * @param {[type]} execArgv List of String arguments passed to the worker process */ // onWorkerStart: function (cID,caps,specs,args,execArgv) { // },/** * Gets executed just before initialising the webdriver session and test framework. It allows you * to manipulate configurations depending on the capability or spec. * @param {Object} config wdio configuration object * @param {Array.<Object>} capabilitIEs List of capabilitIEs details * @param {Array.<String>} specs List of spec file paths that are to be run */ // beforeSession: function (config,capabilitIEs,specs) { // },/** * Gets executed before test execution begins. At this point you can access to all global * variables like `browser`. it is the perfect place to define custom commands. * @param {Array.<Object>} capabilitIEs List of capabilitIEs details * @param {Array.<String>} specs List of spec file paths that are to be run * @param {Object} browser instance of created browser/device session */ // before: function (capabilitIEs,/** * Runs before a WebdriverIO command gets executed. * @param {String} commandname hook command name * @param {Array} args arguments that command would receive */ // beforeCommand: function (commandname,args) { // },/** * Hook that gets executed before the suite starts * @param {Object} suite suite details */ // beforeSuite: function (suitE) { // },/** * Function to be executed before a test (in Mocha/JasminE) starts. */ beforetest() { const chai = @R_607_10613@ire('chai'); const chaiWebdriver = @R_607_10613@ire('chai-webdriverio').default; chai.use(chaiWebdriver(browser)); global.assert = chai.assert; global.should = chai.should; global.expect = chai.expect; // browser.maximizeWindow(); // browser.setwindowsize(1920,1080); },/** * Hook that gets executed _before_ a hook within the suite starts (e.g. runs before calling * beforeEach in Mocha) */ // beforeHook: function (test,context) { // },/** * Hook that gets executed _after_ a hook within the suite starts (e.g. runs after calling * afterEach in Mocha) */ // afterHook: function (test,context,{ error,result,duration,passed,retrIEs }) { // },/** * Function to be executed after a test (in Mocha/JasminE). */ // afterTest: function(test,/** * Hook that gets executed after the suite has ended * @param {Object} suite suite details */ // afterSuite: function (suitE) { // },/** * Runs after a WebdriverIO command gets executed * @param {String} commandname hook command name * @param {Array} args arguments that command would receive * @param {number} result 0 - command success,1 - command error * @param {Object} error error object if any */ // afterCommand: function (commandname,error) { // },/** * Gets executed after all tests are done. You still have access to all global variables from * the test. * @param {number} result 0 - test pass,1 - test fail * @param {Array.<Object>} capabilitIEs List of capabilitIEs details * @param {Array.<String>} specs List of spec file paths that ran */ // after: function (result,/** * Gets executed right after terminaTing the webdriver session. * @param {Object} config wdio configuration object * @param {Array.<Object>} capabilitIEs List of capabilitIEs details * @param {Array.<String>} specs List of spec file paths that ran */ // afterSession: function (config,/** * Gets executed after all workers got shut down and the process is about to exit. An error * thrown in the onComplete hook will result in the test run failing. * @param {Object} exit@R_967_6756@ - success,1 - fail * @param {Object} config wdio configuration object * @param {Array.<Object>} capabilitIEs List of capabilitIEs details * @param {<Object>} results object containing test results */ // onComplete: function(exitCode,config,results) { // },/** * Gets executed when a refresh happens. * @param {String} oldSessionID session ID of the old session * @param {String} newSessionID session ID of the new session */ // onReload: function(oldSessionID,newSessionID) { // } };
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的使用 WebdriverIO 运行 API 测试不会因错误的状态代码而失败。使用 Mocha 运行测试确实失败(如预期)全部内容,希望文章能够帮你解决使用 WebdriverIO 运行 API 测试不会因错误的状态代码而失败。使用 Mocha 运行测试确实失败(如预期)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。