test

git 实践(一) pull的使用

限于喜欢 提交于 2020-04-07 02:23:09
前言 工作中,我们会用到 git pull 来从远程仓库"同步"代码,通常有三种方式; git pull origin <remote_branch>:<local_branch> git pull origin <remote_branch> git pull 这三种用法充分诠释了什么是 简即繁 , 繁即简 ;看上去简单的,往往背后蕴藏玄机; 测试环境: 本地分支:master和dev 远程分支:master和dev $ git branch -a * dev master remotes/origin/HEAD -> origin/master remotes/origin/dev remotes/origin/master 1.git pull origin <remote_branch>:<local_branch> 这种用法写起来最为繁琐,但最好理解: 场景:当本地的当前分支不是local_branch; 作用:将远程分支拉取到指定本地分支; 例如:当前分支是dev,但是你想把远程master”同步”到本地master,但又不想使checkout切换到master分支; 这时你就可以使用git pull origin master:master zhangchangzhi@ZBXXXX /e/02.Workspace-test/gitTest (dev) $ git

基于python实现的http+json协议接口自动化测试框架(实用改进版)

感情迁移 提交于 2020-04-06 21:57:59
目录 1、 写在前面 .................................................................................................................................................................. 1 2、 开发环境 .................................................................................................................................................................. 1 3、 大致流程 .................................................................................................................................................................. 2 4、 框架简介 ......................................................................

pytest第一节

时光怂恿深爱的人放手 提交于 2020-04-06 21:43:55
python鄙视链:pytest>uniitest>rebotframe>流水账>hello word 进了新公司,本来用unittest框架做自动化的,但是因为报告不美观,比不上allure,被老板要求要使用pytest框架。才知道原来还有这么一条鄙视链。 还有什么可说的呢?盘它 1.安装 pip install -U pytest pytest 运行规则:文件名和函数都以test_开头。测试类以Test开头,且不能有__init__方法。断言assert. 下载allure https://github.com/allure-framework/allure2/releases ,把解压后的 bin 目录添加到环境变量的 PATH 中。 #test.py #the content of test.pyimport pytestimport csv,ospath=os.getcwd()# print(path)datapath=path+"\config\config1.csv"# print(datapath)file=open(datapath,"r")table=csv.reader(file)for row in table: if row[1]=="1": print(row[0]) # pytest.main([row[0],"-s", "--html=test

Python大数据处理案例

假如想象 提交于 2020-04-06 19:25:29
分享 知识要点: lubridate包拆解时间 | POSIXlt 利用决策树分类,利用随机森林预测 利用对数进行fit,和exp函数还原 训练集来自Kaggle华盛顿自行车共享计划中的自行车租赁数据,分析共享自行车与天气、时间等关系。数据集共11个变量,10000多行数据。 https://www.kaggle.com/c/bike-sharing-demand 首先看一下官方给出的数据,一共两个表格,都是2011-2012年的数据,区别是Test文件是每个月的日期都是全的,但是没有注册用户和随意用户。而Train文件是每个月只有1-20天,但有两类用户的数量。 求解:补全Train文件里21-30号的用户数量。评价标准是预测与真实数量的比较。 1.png 首先加载文件和包 library(lubridate) library(randomForest) library(readr) setwd("E:") data<-read_csv("train.csv") head(data) 这里我就遇到坑了,用r语言缺省的read.csv死活读不出来正确的文件格式,换成xlsx更惨,所有时间都变成43045这样的怪数字。本来之前试过as.Date可以正确转换,但这次因为有时分秒,就只能用时间戳,但结果也不行。 最后是下载了"readr"包,用read_csv语句,顺利解读。

CDH使用Solr实现HBase二级索引

五迷三道 提交于 2020-04-06 13:12:22
一、为什么要使用Solr做二级索引 二、实时查询方案 三、部署流程 3.1 安装HBase、Solr 3.2 增加HBase复制功能 3.3创建相应的 SolrCloud 集合 3.4 创建 Lily HBase Indexer 配置 3.5创建 Morphline 配置文件 3.6 注册 Lily HBase Indexer Configuration 和 Lily HBase Indexer Service 3.7 同步数据 3.8批量同步索引 3.9 设置多个indexer 四、数据的增删改查 4.1 增加 4.2更新 4.3删除 4.4 总结 五、 扩展命令 六、F&Q 6.1创建indexer失败,原来indexer已经存在 6.2创建indexer失败 6.3使用自带的indexer工具批量同步索引失败,提示找不到morphlines.conf 6.4使用自带的indexer工具批量同步索引失败,提示找不到solrconfig.xml 6.5使用自带的indexer工具批量同步索引失败,提示找不到Java heap space 6.6 HBaseIndexer启动后一会儿就自动退出 6.7 HBaseIndexer同步的数据与Solr不一致 6.8 出现了6.7的问题之后,修改了read-row="never"后,丢失部分字段 一、为什么要使用Solr做二级索引

设计模式-策略模式

柔情痞子 提交于 2020-04-06 12:58:34
策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。策略模式有以下优点: 多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句。 策略模式提供了一系列的可供重用的算法族,恰当使用继承可以把算法族的公共代码转移到父类里面,从而避免重复的代码。 策略模式可以提供相同行为的不同实现,客户可以根据不同时间或空间要求选择不同的。 策略模式提供了对开闭原则的完美支持,可以在不修改原代码的情况下,灵活增加新算法。 策略模式把算法的使用放到环境类中,而算法的实现移到具体策略类中,实现了二者的分离。 模式结构 策略模式是准备一组算法,并将这组算法封装到一系列的策略类里面,作为一个抽象策略类的子类。策略模式的重心不是如何实现算法,而是如何组织这些算法,从而让程序结构更加灵活,具有更好的维护性和扩展性,现在我们来分析其基本结构和实现方法。 策略模式的主要角色如下: 抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现。 具体策略(Concrete Strategy)类

storageclass和本地持久化存储

不想你离开。 提交于 2020-04-06 12:51:18
StorageClass 之前我们部署了 PV 和 PVC 的使用方法,但是前面的 PV 都是静态的,什么意思?就是我要使用的一个 PVC 的话就必须手动去创建一个 PV ,我们也说过这种方式在很大程度上并不能满足我们的需求,比如我们有一个应用需要对存储的并发度要求比较高,而另外一个应用对读写速度又要求比较高,特别是对于 StatefulSet 类型的应用简单的来使用静态的 PV 就很不合适了,这种情况下我们就需要用到动态 PV ,也就是我们今天要讲解的 StorageClass 。 创建 要使用 StorageClass ,我们就得安装对应的自动配置程序,比如我们这里存储后端使用的是 nfs ,那么我们就需要使用到一个 nfs-client 的自动配置程序,我们也叫它 Provisioner ,这个程序使用我们已经配置好的 nfs 服务器,来自动创建持久卷,也就是自动帮我们创建 PV 。 自动创建的 PV 以 ${namespace}-${pvcName}-${pvName} 这样的命名格式创建在 NFS 服务器上的共享数据目录中 而当这个 PV 被回收后会以 archieved-${namespace}-${pvcName}-${pvName} 这样的命名格式存在 NFS 服务器上。 当然在部署 nfs-client 之前,我们需要先成功安装上 nfs 服务器

JNDI数据源局部配置(解决Cannot create JDBC driver of class '' for connect URL 'null')

孤街醉人 提交于 2020-04-06 10:10:33
最开始,我是借鉴 孤傲苍狼 的JNDI教程去做的,他讲得很详细,但是坏处也就是因为他讲的太详细。查了很多书,都是建议说不要用全局去配置JNDI,一是要修改tomcat的server.xml,容易破坏tomcat ,其次是那样吃力不讨好。我是建议用局部变量就好的。 1.步骤一:学习配置JNDI之前,介绍你一定要先掌握tomcat的配置虚拟目录(可以去看 Tomcat中主目录配置与虚拟目录配置问题 这样的文章,也可以去我的 tomcat配置虚拟目录 -思维焦点网易博客 找类似的链接)。学习了tomcat的配置虚拟目录后你就知道了为什么要在 tomcat安装目录\conf\Catalina\localhost 下创建.xml文件。 2.步骤二: 开始通过局部配置JNDI(这个教程也只讲局部配置)。 下面会附上代码,标注颜色的,你要根据自己的实际情况改一下。 3.步骤三:最后通过tomcat的startup.bat启动和用电脑的浏览器是可以看到成功连接数据源和驱动的,但是用eclipse启动tomcat就不能了,总是提示Cannot create JDBC driver of class '' for connect URL 'null'问题 ,后来找到了 tomcat+mysql问题,找不到jdbc驱动? ,说是jdbc for mysql除了mysql-connector-java-3

让PHP来一次性能测试,内部框架 VS Laravel框架?

可紊 提交于 2020-04-06 08:53:08
公司的服务器上安装了两个php版本,版本一:php5.6.30,版本二:php7.2.25 现在我们使用命令行模式分别测试性能 版本一测试结果: 版本二测试结果: 此结果单纯只反映出php版本cpu性能差异,下面展示一下内部框架与Laravel的性能对比 使用 ApacheBench来测试一下性能对比差异 内部框架php5.6下的测试结果 内部框架php7.2测试结果 laravel5.8版本7.2测试结果: 结果显而易见laravel重度框架性能较低,同时需要注意的是以上测试基于http测试,https由于采用了非对称式加密所以测试速度会慢。 内部框架php5.6,https测试结果 下面附上php cpu测试的代码,linux下切换到文件目录使用time php micro_bench.php 即可开启CPU性能测试 <?php /** * Created by PhpStorm. * User: Administrator * Date: 2019/12/18 * Time: 16:20 */ function hallo() { } function simpleucall($n) { for ($i = 0; $i < $n; $i++) hallo(); } function simpleudcall($n) { for ($i = 0; $i < $n; $i++)

Python连接MySQL数据库

大兔子大兔子 提交于 2020-04-06 08:42:19
常用函数 Python DB API 2.0 对事务提供了两个方法: commit() 提交 rollback() 回滚 cursor用来执行命令的方法: callproc(self, procname, args) 用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数 execute(self, query, args) 执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数 executemany(self, query, args) 执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数 nextset(self) 移动到下一个结果集 cursor用来接收返回值的方法: fetchall(self) 接收全部的返回结果行. fetchmany(self, size=None) 接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据. fetchone(self) 返回一条结果行. rowcount 这是一个只读属性,并返回执行execute() 方法后影响的行数。 scroll(self, value, mode='relative') 移动指针到某一行; 如果mode='relative',则表示从当前所在行移动value条,如果 mode=