0%

写在最前面

作为一名Java开发来说,平时说到单元测试就会想到Junit框架。一直都是简单的会用一下,详细的说起来到说不出什么,故此专门查漏一番。

Junit介绍

JUnit 是一个 Java 编程语言的单元测试框架。是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。(xUnit是一系列测试框架的统称,最开始来源于一个叫做Smalltalk的SUnit框架。现在各种面向对象语言,Java、Python语等的类、对象等定义就是来源于Smalltalk语言,后来这些语言都借助了Sunit框架的理念,有很多通用的规范和特征,也就统称为xUnit。)
JUnit 促进了“先测试后编码”的理念,即可以先开发测试数据的一段代码,可以先测试,然后再应用。(but,一般我们都习惯了直接开发,即便是单元测试也是在开发完之后的工作了。😓)

Junit特点

  1. 是一个开放的资源框架,用于编写和运行测试。
  2. 提供注释来识别测试方法。
  3. 提供断言来测试预期结果。
  4. 提供测试运行来运行测试。
  5. 优雅简洁;测试可以自动运行并且检查自身结果并提供即时反馈。
  6. 测试可以被组织为测试套件,包含测试用例,甚至其他的测试套件。

单元测试用例

既然Junit是Java编程语言的单元测试框架。那什么是单元测试呢?
廖雪峰给的解释是,单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。

单元测试要求

一个正式的编写好的单元测试用例的特点是:已知输入和预期输出,即在测试执行前就已知。已知输入需要测试的先决条件,预期输出需要测试后置条件。
每一项需求至少需要两个单元测试用例:一个正检验,一个负检验。如果一个需求有子需求,每一个子需求必须至少有正检验和负检验两个测试用例。

Junit测试框架

Junit是一个回归测试框架。具有以下重要特性:测试工具、测试套件、测试运行器、测试分类

测试工具

测试工具是一整套固定的工具,用于基线测试。测试工具的目的是为了确保测试能够在共享且固定的环境中运行,因此保证测试结果的可重复性。它包括:
在所有测试调用指令发起前的 setUp() 方法。
在测试方法运行后的 tearDown() 方法。

测试套件

测试套件意味捆绑几个测试案例并且同时运行。在 JUnit 中,@RunWith 和 @Suite 都被用作运行测试套件。

测试运行器

测试运行器 用于执行测试案例。

测试分类

测试分类是在编写和测试 JUnit 的重要分类。

  1. 包含一套断言方法的测试断言
  2. 包含规定运行多重测试工具的测试用例
  3. 包含收集执行测试用例结果的方法的测试结果

Hexo是什么:

Hexo is a fast, simple and powerful blog framework. You write posts in Markdown (or other markup languages) and Hexo generates static files with a beautiful theme in seconds.
简单而言呢就是 Hexo是一个框架,这个框架能把我们基于markdown编写的内容,帮我们生成静态文件并上传到指定服务器,而且它有快捷、简单、有效的特点。

Hexo 安装

因为 Hexo 是基于 node 框架的,所以我们需要首先安装node.js。接着执行命令安装Hexo
npm install hexo-cli -g

Hexo 初始化

  • 在本地新建文件夹blog
  • 在文件夹下执行命令 hexo init
  • 成功之后执行命令 hexo server 启动本地服务器, 访问http://localhost:4000即可,显示的内容是即时渲染的。

Hexo命令

这是本篇的重点,如果搭建博客过程中使用hexo有别的问题,可以查找专门搭建博客的帖子。

  • hexo init [folder]
    hexo init 初始化本地文件夹为网站的根目录。 [folder] 可选参数 指定初始化目录的路径,若无指定则默认为当前目录

  • hexo clean //清除静态文件,如果发现部署站点修改的内容不生效,可以试试

  • hexo generate (hexo g) -d // 生成静态文件 -d 可选 生成后部署 等价于 hexo d -g

  • hexo server (hexo s) // 服务器运行

  • hexo deploy (hexo d) // 部署 -g 可选 表示生成后部署 等价于 hexo d -g

关于我

鄙人姓崔,山佳是为姓字所拆。籍直隶顺德府南苏。一介程序员耳。于闲暇之时构一博客,存余工作生活之所思所得,待日后聊以反思。

关于Flask

Flask 是一个使用 Python 编写的轻量级 Web 应用程序框架。可扩展性很好。Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。

Flask使用

准备工作

  • 安装 Python3
  • 安装Sublime(提前配好Python开发环境)或者PyCharm

安装flask

pip install flask

使用Sublime创建Flask项目

创建falsk执行文件

  • 创建test文件夹
  • 在下面创建test.py文件
1
2
3
4
5
6
7
8
9
10
11
12
from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
return 'Hello World!'


if __name__ == '__main__':
app.run()

选择 Tools -> Build System 选定为Python3。
选择 Tools -> Build 运行代码。
看到如下图这个结果就说明执行成功,在浏览器访问其中的地址。接受来自Python的问候吧。

搭建falsk执行文件夹

  1. 创建一个test文件夹
  2. 在test文件夹下创建名为init的pyton文件。(注意前后各两个下划线)
  3. 在test文件夹下创建名为api的pyton文件。

创建完之后,文件结构如下:

1
2
3
.
├── __init__.py
└── api.py

init文件下的内容如下:

1
2
3
from flask import Flask

app = Flask(__name__)

api文件下的内容如下:

1
2
3
4
5
6
7
8
9
10
from test import app


@app.route('/cui')
def hello_flask():
return 'Hello Flask!'


if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)

准备完毕之后,在api文件夹下运行代码(参照以上内容)。这是文件扩张成文件夹,照此可以完成小接口项目的搭建工作。

使用PyCharm创建Flask项目

这时候PyCharm的方便强大之处就体现出来了。使用PyCharm创建Flask项目,直接file -> new project 弹出如下图

点击创建即可。
主要文件结构如下

1
2
3
.
├── app.py
└── templates

打开app.py文件,并执行。系统扩张类比上面Sublime的方法即可。

链接

个人博客刚搭建起来,尚未完善评价功能,有批评指教可以移步简书。
简书链接

写在最前面

这是我在简书上的第一篇博客,这次整理的技术点主要是关于Python的,但因为工作以来一直使用的开发语言是Java,所以在学习过程中会下意识的比较这两者。
在这里整理这些内容有两个原因:
1. 一是为了梳理一下最近的技术点;
2. 二来为了熟悉一下Markdown语法为以后自己的个人博客作准备。

Python初体验

使用Python之前

工作的第一年就有同事分享给我一份资源,是他工作之余去培训Python的资料。但一直都没系统的学习完。直到今年公司有关于抓去数据的任务需求,我特意选择了Python作为新系统接口服务的技术栈之一。
关于Java和Python这两个语言的比较,对于一个程序猿的我来说没有好坏之分,`大锤八十小锤四十`而已。

使用Python

今年上半年,公司有一个新的从合作伙伴公司数据抓取和数据修改等同步的需求。考虑了Java项目搭建的成本和Java在页面爬虫的短板等问题,选择了使用python作为项目的技术栈之一。

初识Python之后

不得不说Python是一门强大的而且极易上手的开发语言,不论你是否有过编程的经验。

总结几个我觉得Java和Python的异同点。

  • Python是动态语言(弱类型语言) / Java 是静态语言(强类型语言)
    动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。 (eg: mumber = 1)
    静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。(eg: Int mumber = 1)
  • Python 和 Java 都是介于编译型和解释型语言之间的一门语言
    使用过python开发有人会发现,python运行的时候会生成一个pyc文件。这说明python也不是一个纯的解释型语言。只不过类似Javac 这样的过程Python已经帮忙处理了,而且类似Java 跨平台的特性,class文件是需要虚拟机解释执行的,Python也是这样,但是有资料显示,2.生成的pyc文件在3.上是无法运行的。
  • Python 没有基础数据类型的概念
    python 常见数据类型有 布尔型、整型、浮点型、字符串、列表、元组、集合、字典
  • Python 中没有NULL 替代的是None
  • Python有丰富的第三方库
    如果有一个成型的不错的构想,在实现的时候不妨先花时间找下已经封装好的第三方库,会带给你很大的惊喜。

链接

个人博客刚搭建起来,尚未完善评价功能,有批评指教可以移步简书。
简书链接