其他测试框架 从 0 构建自动化测试平台 (二) WEB 服务器构建

K米测试 · 2017年05月02日 · 最后由 liumomo 回复于 2018年03月07日 · 3042 次阅读

回顾

在第一篇文章中,介绍了技术选型:从 0 构建自动化测试平台 (一) 之技术选型

接下来就要开始和大家分享具体的产品实现,在此之前我还是想聊一下测试对编程语言的掌握程度,或者说是熟悉程度,主要是和开发的区别,简单说就是:用到哪里学哪里;没有一定要求对编程语言进行系统的学习,在我看来如果系统学习一下这些大把的语言 (Node.js、python、html、css、js),就有可能出现还没开始呢,就已经放弃了!我也曾经一度的在针扎和反省:我这样不是在浪费生命吗?对于基础不好的我来说系统学习一门编程语言是无聊 + 痛苦的,(虽然懂了之后就很简单,但过程还是比较痛苦)系统学习有点像学校里面的学习模式,从第一章学习到最后一章,完了之后还是不会,这就出现了还没开始呢就已经放弃了的悲剧,这也是符合 2/8 原则的:80% 有用的内容,在 20% 的章节里面。简单总结我的个人经验:

  • 掌握基本的语法,大概在书的 1-2 章里面,就可以飘过了;
  • 在碰到需要用到的地方,专门攻坚下,看一些案例,最好的方法是:利用身边的资源帮你讲解,这里可能是你的同事、朋友、甚至是你的 wife🙃;
  • 善于利用搜索引擎,技术性方面的基本上是 google 解决 (非常好的 google 访问方法);
  • 阅读官方或者别人的源代码,能看懂最好,看不懂会用也行;
  • 推荐一个教程:菜鸟教程

    当然了,以上的学习也是有弊端的,会让你的进度一开始变的非常的慢,因为你要边学习边 coding,但是每天进步一点点,别有一番滋味,不管怎么样,至少有一个好的开始,以上学习方法仅供参考,如果你具有较强的开发能力请无视。

    我就是一个从 0 基础开始的测试,所以不用担心,你也可以。

    好了,说完了简 (gao) 易 (duan) 的学习方法,就可以开始今天的话题了:WEB 服务器构建之 Node.js+Express,直接进入主题:

Express 简介

Express 是一个简洁而灵活的 node.js Web 应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
使用 Express 可以快速地搭建一个完整功能的网站。
Express 框架核心特性:

  • 可以设置中间件来响应 HTTP 请求。
  • 定义了路由表用于执行不同的 HTTP 请求动作。
  • 可以通过向模板传递参数来动态渲染 HTML 页面。

安装 Express

安装 Express 并将其保存到依赖列表中:

$ npm install express --save

以上命令会将 Express 框架安装在当前目录的 node_modules 目录中, node_modules 目录下会自动创建 express 目录。以下几个重要的模块是需要与 express 框架一起安装的:

  • body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。
  • cookie-parser - 这就是一个解析 Cookie 的工具。通过 req.cookies 可以取到传过来的 cookie,并把它们转成对象。
  • multer - node.js 中间件,用于处理 enctype="multipart/form-data"(设置表单的 MIME 编码)的表单数据。
$ npm install body-parser --save
$ npm install cookie-parser --save
$ npm install multer --save

安装完后,我们可以查看下 express 使用的版本号:

$ npm list express
└── express@4.13.4

Express 框架实例

接下来我们使用 Express 框架来构建 WEB 服务。
我们引入了 express 模块,并在客户端发起请求后,输出对应的响应。
创建 app.js 文件,代码如下所示:
app.js 文件代码:

//app.js 文件
var express = require('express')
    ,path = require('path')
    ,fs = require('fs')
    ,logger = require('morgan')
    ,methodOverride = require('method-override')
    ,session = require('express-session')
    ,cookieParser = require('cookie-parser')
    ,bodyParser = require('body-parser')
    ,errorHandler = require('errorhandler')
    ,multer = require('multer')
    ,url = require("url")
    ,app = express();
// all environments
app.set('port', process.env.PORT || 8089);
app.set('view engine', 'pug'); //设置模板引擎
app.set('views', path.join(__dirname, '/res/app/views')); //设置模板引擎相对路径(相对当前目录)
app.use(express.static(path.join(__dirname, 'static'))); //设置静态文件目录
app.use(session({
    resave: true,
    saveUninitialized: true,
    secret: 'uwotm8'
}));
app.use(cookieParser());

app.use(bodyParser.urlencoded({
    extended: false
}));
app.use(bodyParser.json());

/* 访问主页*/
app.get('/', function (req, res) {
    res.render('home');
});

/* Listen端口*/
var server = app.listen(app.get('port'), function () {
    var host = '127.0.0.1';
    console.log("访问地址:http://%s:%s", host, app.get('port'));
});

/* http服务器监听error事件*/
server.on('error', function (err) {
    // 端口被占用
    if (err.code == 'EADDRINUSE') {
        console.log('port [%s] is used, please change other port.', app.get('port'))
    }
});

app.js 基本内容就是以上内容了,接下来要在/res/app/view 目录下创建 home.pug,里面的内容就是你主页的具体内容。
执行以上代码:

$ node app.js 
INF/app.js 93151 [*] 访问地址:http://127.0.0.1:8089

就这样,我们完成 Node.js 的服务器搭建。

补充说明:

1、app.set('view engine', 'pug'); //设置模板引擎
以上需要安装 pug,和 express 的安装一样,

npm install pug

这里我是用 package.json 来管理的,里面的内容是:

{
  "name": "kmtestplatform",
  "version": "0.0.1",
  "dependencies": {
    "body-parser": "~1.15.2",
    "cookie-parser": "1.4.3",
    "errorhandler": "^1.1.1",
    "express": "~4.13.4",
    "express-session": "^1.7.2",
    "pug": "^2.0.0-beta12",
    "method-override": "^2.1.2",
    "morgan": "^1.2.2",
    "multer": "~1.1.0",
    "rethinkdbdash": "2.3.19",
    "serve-favicon": "^2.0.1",
    "rethinkdb": "^2.2.0",
    "debug": "0.7.4",
    "chalk": "~1.1.1"
  }
}

如果有了 package.json 管理依赖库就比较简单了,只要在 package.json 目录下执行 npm install,就会自动安装对应的依赖,部署到生产环境下就变的比较方便了。
2、express+node.js 的搭建我参考的是菜鸟教程nodejs-express-framewor,里面有非常详细的介绍。

3、相关资料
Express 官网
Express4.x API 中文版
Express4.x API

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 6 条回复 时间 点赞

楼主写了很多字,挺不容易的。不过关于 STF 的环境安装社区已经有很多帖子介绍的很详细了,楼主不如从你开始着手的地方开始介绍吧,Nodejs,express,db 什么的都可以跳过去

楼主写的很棒!已关注,一起学习 STF!!

wangpengfei100 回复

感谢鼓励,一起学习,一起交流

simple 回复

1、测试平台实际上和 STF 没有特别大的关系,STF 只是一个远程 Android 设备管理工具,在我的设计里面已经支持从 STF 获取设备列表,也支持本地设备列表,也就是说没有 STF 也能正常工作,没有任何的影响;
2、可能对于你这样的高手这些都不在话下,但是对于新手我相信还是有很多帮助的,我曾经也是新手,那些血和泪让新手少流点吧

K米测试 回复

从你第一篇文章的那个首页截图来看,你的功能已经全部包含在 stf 项目里面了,所以我个人可能误解你是基于 STF 做的二次开发,如果你是做了类似 STF 一样的平台,可以无视我的话,启动后面的系列文章。

仅楼主可见
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册