nodejs开发接口自动化测试03-用户登录问题
发布于 3 个月前 作者 imzengyang 608 次浏览 来自 分享

本教程使用的到技术栈如下: 操作系统:windows10, 编程语言:node.js 8.9.4 https://nodejs.org/en/ 代码编辑器: CukeTest http://cuketest.com/ 用到的http库 got :https://www.npmjs.com/package/got 被测API:https://developer.github.com/v3/#authentication 上篇文章链接:https://cnodejs.org/topic/5a7bff368d6e16e56bb8066c

认证方式

一般情况下,我们api的用户验证方式为如下三种:

  • 用户名/密码
  • API Key / Tokens
  • OAuth

本次代码样例中使用 用户名/密码 方式. 操作如下:

新建用例文件

在CukeTest中新建feature文件,定义测试用例

# language: zh-CN
功能: 查看github仓库信息
应该包含github仓库中所有信息

  场景: 查看github仓库信息
    假如认证用户登录
    当查看我github仓库信息
    那么github仓库中应该包含"abc"

CukeTest 中可视化界面如下: image.png

打开definitions.js 文件生成对应的代码: defintions.js

var { Given, When, Then } = require('cucumber')
var got = require('got')
var assert = require('assert')
var { userinfo, username } = require('../../config')

let base_url = 'https://api.github.com'

Given(/^认证用户登录$/, async function () {
    let response = await got.get(base_url, userinfo)
    return assert.equal(response.statusCode, 200);
});
async function listMyRepos() {
    let response = await got.get(base_url + '/user/repos', userinfo)
    return response;
}

When(/^查看我github仓库信息$/, async function () {
    await listMyRepos();
});

async function myReposIncludes(repo) {
    let response = await listMyRepos();
    let res = response.body;
    let arr = [];
    for (let v of res) {
        arr.push(v.name)
    }
    return assert.ok(arr.indexOf(repo) > -1);
}

Then(/^github仓库中应该包含"([^"]*)"$/, async function (repo) {
    return await myReposIncludes(repo);
});

config.js

exports.userinfo = {
    json:true,
    auth:'yourGItHubUserName:YourPasswd'
}

exports.username = 'yourGItHubUserName'

点击运行项目,即可自动运行项目代码,运行完毕后自动生成测试报告。 image.png

所有代码已经上传到github: https://github.com/imzengyang/API-testing

运行方式

  • 安装依赖 使用CukeTest打开我们项目代码,点击更新依赖包配置按钮,下载项目依赖项。 image.png

  • 调试代码 修改 config.js 文件,更改为你自己的GitHub用户名和密码 在feature文件中,点击每个操作步骤后面的绿色按钮可以自动定位到具体自动化代码的实现位置。可以进行代码修改 image.png

同理: 在js文件内函数上右键–定位步骤描述,也能从代码位置跳转到对应操作步骤上面。 image.png

总结

使用BDD的方式做自动化测试,希望能够给团队的测试人员更多一种选择。 使用BDD的方式,能够让团队中的更多同事参与进来。

回到顶部