2018-07-23--e2e测试cypress

cypress 框架

参考文章:https://juejin.im/post/5aaa24caf265da23870e8f44

1.登录测试用例:

describe('登录测试', () => {

it('登录页面', () => {

// 提交输入表单并点击提交按钮

    cy.visit('http://192.168.1.218:8084/#/login');

    cy.get('input').eq(0).type('admin');

    cy.get('input').eq(1).type('123456');

    // cy.get('button').eq(0).click();

    cy.get('button').click();

    // cy.contains('测试病人new');

    // 验证是否被重定向--区分大小写

    cy.url({timeout:3000 }).should('includes', 'Homepage');

  });

});


2. 退出测试用例:

describe('退出测试', () => {

// 在每次测试前登录:

  beforeEach(() => {

cy.login('admin', '123456');

  });

  it('点击设置,再点击退出来退出系统', () => {

// 确认不在登录页面,在首页

    cy.url().should('not.contains', 'login');

    cy.get('div[class="el-dropdown"]').click();

    cy.

get('li[class="el-dropdown-menu__item"]')

// .eq(1)

      // .get('li') // 多重get无效

      .eq(2)

.click();

    cy.url().should('contains', 'login');

    // 确认 退出后能否访问需登录的页面

    cy.visit('http://192.168.1.218:8084/#/Homepage');

    cy.url().should('contains', 'login');

    // cy.pause();

    setTimeout(() => {

console.log(0);

      cy.wait(100);

      // ??? 时间设置比较小的时候就会出错,还没退出--可能的原因:cy.click(),visit()等操作是异步的

      // 如果外层没有setTimeout,assert会最先执行

      assert.isNull(sessionStorage.getItem('userId'), 'userId is undefined');

    }, 0);

  });

  // it('test', () => {

  //  // 确认localStorage是否被清除

  //  console.log(sessionStorage.getItem('userId'));

//  assert.isUndefined(sessionStorage.getItem('userId'), 'userId is undefined');

// });

});


3.commands.js中的login方法:

Cypress.Commands.add('login', (username, password) => {

// 向后端发出POST请求

  cy

.request({

url:'http://192.168.1.218:8084/wechat/login/check',

      method:'POST',

      body: {

username,

        password,

      },

      form:true,

    })

.then(resp => {

// console.log(resp);

// console.log(JSON.parse(resp.body).data.id);

      // 断言来自服务器的响应

      expect(resp.status).to.eq(200);

      expect(JSON.parse(resp.body).code).to.eq(0);

      sessionStorage.setItem('userId', JSON.parse(resp.body).data.id); // 用户id

// expect(resp.body).to.have.property('data');

      // 我们所有的private路径都会检查存在redux store上的auth token,所以让我们把它传递到那里

      // 到仪表盘

      cy.visit('http://192.168.1.218:8084/#/Homepage');

    });

});

你可能感兴趣的:(2018-07-23--e2e测试cypress)