test

常用模块之 time,datetime,random,os,sys

徘徊边缘 提交于 2020-03-28 02:34:35
time与datetime模块 先认识几个python中关于时间的名词: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。1970年之前的日期无法以此表示,太遥远的日期也不行,UNIX和Windows只支持到2038年,时间戳最适合做日期运算。 格式化的时间字符串(Format String):按照指定格式输出日期字符串 结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时) import time #我们先以当前时间为准,让大家快速认识三种形式的时间 print(time.time()) # 时间戳:1487130156.419527 print(time.strftime("%Y-%m-%d %X")) #格式化的时间字符串:'2017-02-15 11:40:53' print(time.localtime()) #本地时区的struct_time print(time.gmtime()) #UTC时区的struct_time 三种形式的时间实例 """ python中时间日期格式化符号: ----------------------------

Python接口自动化测试01

人盡茶涼 提交于 2020-03-28 00:39:33
1)环境准备:   接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对性的进行选择,甚至当工具不太适合项目时需要自己进行开发。   在我们项目的初期,我们采用的是jmeter进行接口测试,当时觉得这个工具上手简单,团队成员学习成本低,并且接口测试的脚本稍微调整一下还可以用来做性能测试。   不过随着项目规模、团队人数的不断增长,渐渐的这个工具有适应不了当前项目的需求了,为此我们项目也重新开发了相关接口自动化的平台。但是,但是。。。可能是我让大家中毒太深,现在很多同学一提到接口测试关联到jmeter,为此,我深深感到不安。毕竟jmeter只是个工具,换个项目换个协议你是否还能玩转接口测试呢?session和cookie有什么区别?工具又是怎么实现的呢?   比如session如何保存,接口依赖如何处理,case如何管理及执行顺序,测试数据如何管理等等题,这个过程也有助于我们更加深刻的理解接口测试和http协议。   本文主要采用python语言,python中http协议接口相关的库有urllib,urllib2以及reqeusts库,这其中reqeusts库用来起来最方便,因此我也主要采用requests库来做http协议的接口测试

postgresql数据库常规操作管理

余生颓废 提交于 2020-03-27 23:48:15
数据库连接: 方式一: psql -U test_huishishuju -d test_huishishuju 参数说明: -U 数据库用户名 -d 数据库名称 方式二: su – postgres -bash-4.2$ psql 进入postgres数据库 数据库用户管理: 创建用户 postgres=# create user dev_huishishuju; 或者create role dev_huishishuju; 创建数据库用户 postgres=# alter user dev_huishishuju with password '123456'; 修改数据库用户的密码为123456 设置用户权限 • 基本语法格式 CREATE或者ALTER ROLE role_name WITH optional_permissions(用户的授权); 实例: postgres=# alter user dev_huishishuju with superuser; 修改用户的属性,设置数据库用户dev_huishishuju为superuser postgres=# alter user dev_huishishuju with login; 给数据库用户设置登陆权限 • 设置用户权限的语法格式如下: GRANT permission_type ON table_name TO

Linux命令find讲解

北城以北 提交于 2020-03-27 18:42:37
3 月,跳不动了?>>> 感谢参考原文- http://bjbsair.com/2020-03-27/tech-info/7096/ find 命令概览 Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。 1.命令格式: find pathname -options [-print -exec -ok ...] 2.命令功能: 用于在文件树种查找文件,并作出相应的处理 3.命令参数: pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 -print:find命令将匹配的文件输出到标准输出。 -exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } ;,注意{ }和\;之间的空格。 -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令

几个前端自动化工具(一)bower,grunt,gulp,jspm,karmam,webpack

筅森魡賤 提交于 2020-03-27 18:18:36
3 月,跳不动了?>>> 前端有很多包管理工具,除了常见的webpack外还有bower,grunt,gulp,jspm,karma,这里就走马观花的都测试一遍 1 Bower https://bower.io/ 使用方法: 安装bower:npm install bower 使用bower安装包: install jquery --save 维护一个bower.json,格式如下: { "name": "example", "version": "0.0.1", "dependencies": { "jquery": "~2.1.3" }, "private": true } 2 GRUNT http://gruntjs.com/ 安装grunt:npm install -g grunt-cli 使用grunt:直接执行grunt 维护一个gruntfile.js module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.initConfig({ jshint: { files: ['Gruntfile.js', 'src/main/javascript/*.js','src/test/javascript/*.js'] } }); grunt.registerTask

笔记之Linux系统文件管理命令

落爺英雄遲暮 提交于 2020-03-27 15:29:33
基本命令 ls:显示目录文件 参数:-a显示当前目录下所有文件,包括隐藏文件 -l使用长格式显示(显示文件权限,最新修改时间等信息) -F区分显示是一个文件还是目录 -R显示文件夹及文件夹里的文件,分级显示出来 -d列出指定的目录里的文件及文件夹(如:ls -d test/*:表示把test里的所有文件及文件夹列出来,只 列出test里面的文件;-R列出的是全部,包括其子目录下的所有目录分级显示) pwd:显示当前所在目录(想知道自己的所在位置路径,可以使用此命令查看) cd:切换目录 cd ..:回到上一级目录 cd~:回到用户的宿主目录 cd /或cd:切换到跟目录 clear:清空终端屏幕显示(或者Ctrl+l) alias:设置别名(如:alias ls='ls -l',设置成功后,输入ls命令实际运行ls -l,这是暂时的设置,也可设置永久) export:设置和显示环境变量 ps:查看系统中运行的进程(监控自己的Linux系统各个进程的瞬时状态), ps -a:显示所有终端下执行的程序 top:实时监控系统处理器的状态等信息(实时监控CPU,持续监控,实时更新显示) kill:杀死系统中运行的进程(对前台运行的进程,可以用Ctrl+c终止,后台进程用kill,会先使用ps、top等命令获得进程的pid,然后用kill命令杀掉进程); kill -15 pid

Spring WebFlux 入门

核能气质少年 提交于 2020-03-27 14:37:31
1. WebFlux介绍 Spring WebFlux 是 Spring Framework 5.0中引入的新的响应式web框架。与Spring MVC不同,它不需要Servlet API,是完全异步且非阻塞的,并且通过Reactor项目实现了Reactive Streams规范。 Spring WebFlux 用于创建基于事件循环执行模型的完全异步且非阻塞的应用程序。 (PS:所谓异步非阻塞是针对服务端而言的,是说服务端可以充分利用CPU资源去做更多事情,这与客户端无关,客户端该怎么请求还是怎么请求。) Reactive Streams是一套用于构建高吞吐量、低延迟应用的规范。而Reactor项目是基于这套规范的实现,它是一个完全非阻塞的基础,且支持背压。Spring WebFlux基于Reactor实现了完全异步非阻塞的一套web框架,是一套响应式堆栈。 【spring-webmvc + Servlet + Tomcat】响应式的、异步非阻塞的 【spring-webflux + Reactor + Netty】命令式的、同步阻塞的 2. Spring WebFlux Framework Spring WebFlux有两种风格:功能性和基于注释的。基于注释的与Spring MVC非常相近。例如: 1 @RestController 2 @RequestMapping("

Java中的值传递和引用传递

血红的双手。 提交于 2020-03-27 08:56:14
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。 Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言)。 如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的。如果在函数中改变了副本的值不会改变原始的值.。 如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,如new一个,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的 地址,所以不会改变参数的值。 例子: package com.demo.test; public class Employee { private String name; private double salary; public Employee(String

深入理解面向对象 -- 基于 JavaScript 实现

痴心易碎 提交于 2020-03-27 08:43:04
我们在学习编程时,避免不了会接触一个概念,叫: 面向对象编程(Object-oriented programming,缩写:oop) (不是搞对象那个对象哈),其实我们的编程方式,不止有面向对象,还有 面向过程编程 、 面向流编程 、 面向函数编程 、 面向接口编程 等。作为一名一直混迹在前端的小菜鸟,今天就来跟大家深入的探讨一下 JavaScript面向对象 。作为程序员,我们多多少少都会接触自己擅长语言之外的编程语言,比如我作为一名前端,同时我还会 Java ,从这两个语言本身出发的话,我们会发现这两种语言的 面向对象 存在着一丝丝的不同,到底哪里不同呢?我们今天就拿这两种语言对比着来,拿具体的实例看一下,到底什么叫 面向对象编程 。 现在很多文章都会讲 面向对象三大特性 、 面向对象七原则 、 设计模式 等概念,今天这篇文章不准备讲这些概念,从实例出发,理解 面向对象 是什么,如何做 面向对象 程序设计。 我们在深入探讨 面向对象 之前,我们先来复习一下 面向过程编程 ,这里可能有人会问了,不是讲 面向对象 吗?为什么还要讲 面向过程 呢?主要是因为, 面向过程编程 是软件思想中的鼻祖。 面向过程编程 还是很好理解的,因为它是一种以 过程 作为中心的编程思想,其中 过程 的含义就是 完成一件事情的步骤 。 面向过程 其实是一种 机械的思想 ,它就像流水线一样

正则删除空行

ε祈祈猫儿з 提交于 2020-03-27 04:53:51
/** * auther by GodSon * * date : 2010 - 11 -29 */ $.extend($.fn.validatebox.defaults.rules, { minLength: { // 判断最小长度 validator: function (value, param) { return value.length >= param[0]; }, message: '最少输入 {0} 个字符。' }, length: { validator: function (value, param) { var len = $.trim(value).length; return len >= param[0] && len <= param[1]; }, message: "内容长度介于{0}和{1}之间." }, phone: {// 验证电话号码 validator: function (value) { return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value); }, message: '格式不正确,请使用下面格式:020-88888888' }, mobile: {// 验证手机号码 validator: