自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 重构一份应用pytest框架的测试代码

项目中有份API测试的代码的结构大致如下 /api_test – test_device_api01_via_lan.py – test_device_api02_via_lan.py – test_device_api03_via_lan.py – test_device_api01_via_wan.py – te...

2018-05-11 23:26:41 1002

原创 pytest测试框架中的setup和tearDown - 1

这次内容是阅读[pytest fixtures: explicit, modular, scalable](https://docs.pytest.org/en/latest/fixture.html )的一些总结,pytest fixture功能很丰富,功能远不止用来构建测试中传统的setup/teardown。但是还是先看下用pytest.fixture特性写的setup/teardow...

2018-05-09 21:48:31 1889

原创 pytest测试框架中的setup和tearDown - 0

最近对pytest比较感兴趣,看了pytest的文档classic xunit-style setup,这里做个小结,直接看代码。# content of test_websites.py'''Setup/teardown in pytest, see https://docs.pytest.org/en/3.5.1/xunit_setup.htmlRemarks:1. setup...

2018-05-08 21:51:19 3290

原创 不使用IDE的情况下,导入自定义Python module的最佳实践 - 1

CPyUG确实是个挺好的组织,Python方面的问题一般都会有热心又专业的小伙伴帮忙回答,针对上次导入自定义Python module的问题,目前有两个可行的办法。方法1是针对应用了pytest框架的测试项目的,例如有如下项目结构。 项目中定义了一个包util,其中有模块global_values.py,在另一个目录testlogin中有test_login.py希望导入模块global...

2018-05-06 22:20:31 406

原创 不使用IDE的情况下,导入自定义Python module的最佳实践 - 0

最近比较喜欢微软出的Visual Studio Code这个代码编辑器,和Sublime有点相似,但是用起来更方便一些。和PyCharm不一样,用VS code写自定义module的时候,会出现找不到module的报错,原因是VS code不会像IDE那样,帮用户把项目目录临时性加入到系统PATH中去。今天做了些探索,目前可行的方法大致如下,但是仍然不能算是最佳实践,已经在CPyUG上提了这个...

2018-05-04 21:38:19 253

原创 【高质量Python代码】01 - 将常量放在同一个文件里并防止修改

最近在看《编写高质量代码-改善Python程序的91个建议》,里面建议了很多比较好,比较Pythonic的代码写法,打算边看边实践,挑选一些记录下,这算是第一篇吧。常量也就是那些一般不会变的数据,建议的做法如下:'''Best practice 01Put all constants in one file, and protect them from changing value....

2018-04-19 20:31:30 2968

转载 转一篇关于Python类属性与实例属性的博文

链接见 https://segmentfault.com/a/1190000002671941小结下我的理解,如下一个Person类class Person(object): school_name = "ABC school" def __init__(self, name): self.name = name def print_name(s...

2018-04-17 23:47:00 146

原创 virtualenv的使用小记

virtualenv可以用来创建一套虚拟的、独立的、干净python环境,如果系统中安装有多个python版本,则还可以指定版本。pip install virtualenv pip安装virtualenv。 virtualenv venv --python=python3.6 创建一个名字叫venv的python环境,python版本指定为3.6,然后virtualenv会在当前目录下创...

2018-04-17 20:48:50 274

原创 解决上篇博文里提到的不能使用unittest.mock.patch()的问题

今天研究了下,问题解决了,关键还是一个查找module的问题。小结一个import的基础用法很多源代码里看到这样的用法,from flask import Flask,from models.item import ItemModel,然后当我自己创建了一个名字叫person的module的时候,如果我也想在其他代码里方便的使用from person import Person来导入P...

2018-04-16 20:49:56 837

原创 Python的单元测试unittest中的Mock使用小结

前面一篇博文简单说了使用unittest.mock对无返回值的函数做单元测试。这里是更多一些例子的总结。被测函数中使用到了input需要自动化输入#!/usr/bin/env python3from unittest import TestCasefrom unittest.mock import patchfrom unittest import maindef fu...

2018-04-14 21:41:40 4916

原创 使用unittest做类似print这样无return返回值的函数的单元测试

在看Python里自带的一个单元测试库unittest,有个有意思的应用是可以对类似于print()这样无return返回值的函数做验证。见下面代码。#!/usr/bin/env python3from unittest import TestCasefrom unittest.mock import patchfrom unittest import mainclass Pers...

2018-04-11 21:40:29 4498 3

原创 'Master Jenkins CI For DevOps and Developers'课程总结 - 2

CI/CD在Jenkins上的简易实现Build job在pipeline的最上游的Build job里的Configure里做如下设置,可使该job以1分钟1次的频率,去轮询Git repository里的代码,如果有更新,则即刻开始build。* * * * *表示轮询频率是每一天的每一分钟,这里是用的Cron表达式,具体可见Cron Format。Continous Deli...

2018-04-05 21:42:24 203

原创 'Master Jenkins CI For DevOps and Developers'课程总结 - 1

在Maven项目里添加Java静态代码质量检查并发布报告需要的插件:Maven Integration pluginCheckstyle Plug-in具体步骤:新建job,选择Freestyle project。 Source Code Management选择Git,填入Repository URL。Build中添加Invoke top-level Maven tar...

2018-04-05 18:10:25 157

原创 'Master Jenkins CI For DevOps and Developers'课程总结 - 0

这个课程的内容不算多,不到一个星期就看完了,赶紧来做个总结和笔记。课程中的内容大致分为3部分。普通的Jenkins pipeline的创建。从github(git)上pull代码,触发的时间设置(Poll SCM),配置JDK、Maven、Git,配置Maven项目,Maven项目中clean package后收集生成的war包,job之间的触发的互相依赖,使用pipeline插件,让p...

2018-04-04 00:07:35 305

原创 Enrolled 'Master Jenkins CI For DevOps and Developers'!

在Thoughtworks第一次接触pipeline等概念后,非常认同由Jenkins pipeline串联起来的开发-测试-部署这个工作模式,试听了下这个课程,instructor是James Lee,可能是位华裔,口音好听多了,而且课程设计可称的上是精致,确实是认真备课过的。目前已经完成了好几章了,很是喜欢。目前的问题的是学的太快,急需总结。...

2018-04-01 23:56:21 135

原创 测试框架设计学习笔记 - 4

已经把课程基本看完,简单总结下Maven后面的内容:Ant的基本使用(build.xml)。这里作为小白,我有些困惑,既然Maven已经可以提供从命令行拉起所有的testng测试,那ant在此有什么用?我在Q&A上向讲师提出这个问题,表示不太明白为什么这里需要学习ant,似乎Maven已经足够满足建立Jenkins+Maven+testNG+Selenium Webdriver这一套...

2018-04-01 22:07:20 258

原创 2018年的学习计划

2018年马上就要过完第一个季度了(1~3月),感觉还是需要计划一下今年的时间,集中一些注意力。扯点闲话,以前学习了一点点王阳明心学的皮毛,知行合一4个字,本来是挂在博客的title上,后来才知道知行合一并不是最初那么字面的意思,其实大概是说3个瞬间,1人眼在看到事物后,2心(大脑)对看到的东西做出解读和反应,3人做出应有的行为,知行合一是说这3个瞬间应该是统一,我个人的理解就是遇到很多显而易...

2018-03-25 23:38:43 1064

原创 Jenkins执行完构建后testng插件找不到testng-results.xml

昨天把Jenkins(ver. 2.107.1,此处注意,几乎是一个最新的Jenkins版本)安装在mac上,并建了一个简单的job,来体验下Jenkins+Maven+testng的效果,遇到这样一个有意思的问题,就是使用默认设置,也配置了testng的测试结果报告插件, 当Jenkins构建执行后,也可以正常找到指定的pom.xml文件,并执行Maven命令mvn test -PmyTe...

2018-03-23 20:33:32 4354

原创 测试框架设计学习笔记 - 3

学习到28节,testng部分结束了,开始学习Maven。主要内容是Maven的介绍,安装,配置,和几个主要Maven命令:mvn archetype:generatemvn eclipse:eclipsemvn testmvn test -Psanity //sanity 是POM.xml中某个profile的id,命令行执行也是异常方便,在Jenkins上异常好用…Mave...

2018-03-21 23:15:57 161

原创 小结WEB接口测试

最近在做一个接口测试的更新,往里面添加了很多新的测试,连续加班两周,这里做一些总结。被测设备介绍: 这是一个针对某款智能设备的WEB API的测试,设备内运行OpenWRT系统,内部使用一套节点来记录很多设备信息和配置信息,设备也提供一个WEB GUI页面,可以通过打开其主页来做配置,也提供了一套WEB 接口API,来实现远程设置功能(其实就是给WEB GUI页面来调用)测试框架介绍: ...

2018-03-16 22:20:07 1202

原创 测试框架设计学习笔记 - 2

学习到18节,完成了testNG的部分,其中包括了以下testNG的特性:group,例如加上tag @Test(groups={“smoke”}),就表示这个test属于smoke group,可以属于多个group,然后相应的在xml文件中,做如下定义,即可使用group,这里可以include也可以exclude。<suite name="Test - 1"> ...

2018-02-12 15:38:55 144

原创 测试框架设计学习笔记 - 1

学习到第12节课程,了解到testNG的anotation有以下(and more):@BeforeSuite suite是testNG使用的xml文件中的一个概念,也许可以理解为最上层的一个测试用例套件,一个suite可以包含有多个test@BeforeTest test这里可以理解成一个测试模块(test module),一个test可包含多个测试类class@BeforeClass

2018-01-29 23:01:49 173

原创 测试框架设计学习笔记 - 0

开始学习Udemy上的一个课程Design Selenium Test framework from scratch-Architect level,随手写一些笔记。课程第一部分主要在讲testNG,在项目上目前一直接触的是JUnit,用起来还比较方便,小结一下,用到了JUnit里以下特性:Category,进行test case分类,方便同一份代码在不同环境下选择执行不同的test c

2018-01-28 08:11:23 253

原创 实现Selenium Webdriver自动化测试中对失败测试进行截图并发布到Jenkins

在基于Selenium Webdriver(Java) + Junit4 + Jenkins 的web 自动化测试中,进行失败test的截图,同时发布到Jenkins上。这两天在研究这个问题,这是一点总结,首先需要版本够高的Jenkins,并安装Junit Attachments plugin,同时注意要去Jenkins配置 Additional test report features,选择...

2018-01-23 22:40:38 1227

原创 让JUnit4里的test运行时动态决定执行或不执行(Skip)

其实还是上次的问题,在上一篇中提到解决办法是应用 JUnit4 里的 Rule 来实现,今天继续研究了下,觉得还是不够好,因为实际需求是,需要在运行测试的时候去动态skip 某些test,今天请教了下一位朋友,就有了如下代码:package com.junit4test;import org.junit.Test;import org.junit.runner.RunWith;@Ru...

2018-01-16 17:34:55 1735

原创 Junit框架中动态选择是否执行test

一组应用了junit的测试,需要增加一个动态判断,来决定是否跑test。我知道这组测试其实已经应用了junit的Category功能,来做测试组的初期分类,在跑这一整套测试的时候,执行环节会针对不同的被测产品给出一个custom参数,测试代码跑起来后会根据这个custom的值,来选择排除某些category和包括哪些category。现在这个策略不够用了,因为之前标记好的category,同一

2018-01-11 20:37:32 427

原创 远程修改OpenWRT开发板中的文件

这两天收到一个任务,某接口测试的测试用例需要更新,需要在测试中修改开发板中的文件。先白话下上层的一些东西,包括这套接口测试在内,可见的全部测试都挂在Jenkins上,测试对象是某刷了OpenWRT修改版的智能设备,Jenkins上游自然是自动编译生成build文件的各种job(有主线和针对不同需求的分支),一旦成功生成新的build文件,就会触发下游各种各样的测试,其中包括接口测试。挂在J

2017-12-26 23:46:44 534

原创 用shell中用jq解析json遇到compile error

前几天接到任务,需要完善一段shell写的测试脚本,其中的问题最后归结成这样一个问题,已知如下json格式的字符串{ "up": true, "pending": false, "available": true, "autostart": true, "dynamic": false, "uptime": 5217, "ipv4

2017-12-05 23:18:12 1548

原创 Python实战计划学习作业2-2

from bs4 import BeautifulSoupimport requestsimport pymongofrom string import whitespaceclient = pymongo.MongoClient('localhost', 27017)phone_number_sale = client['phone_number_sale']page_url_tab =

2016-12-07 23:57:36 356

原创 用Shell精简log文件(shell的字符串和文件操作)

当前目录下有文件log,内容大致如下2015-11-29 54144a04ad4asd044a4s CSeq:1 INVITE sip:[email protected]:5060 SIP/2.02015-11-29 54144a04ad4asd045457 CSeq:1 INVITE SIP/2.0 200 OK将此log文件做精简,创建文件minilog内容如下1 INVITE sip:21

2016-11-29 16:31:15 632

原创 Python实战计划学习作业2-1

代码如下import pymongofrom bs4 import BeautifulSoupimport requestsclient = pymongo.MongoClient('localhost', 27017)xiaozhu = client['xiaozhu']rent_house_info_tab = xiaozhu['rent_house_info_tab']urls = [

2016-11-26 00:09:01 450

原创 Python实战计划学习作业1-5

代码如下from bs4 import BeautifulSoupimport requestssingle_url = "http://weheartit.com/inspirations/taylorswift?scrolling=true&page="target_dir = "/Users/reed/Desktop/images"url_list = ["http://bj.58.com

2016-11-22 23:18:12 1859

原创 Python实战计划学习作业1-4

代码如下from bs4 import BeautifulSoupimport requestsimport timeimport osimport urllibimport randomsingle_url = "http://weheartit.com/inspirations/taylorswift?scrolling=true&page="target_dir = "/Users

2016-11-16 22:29:12 1108

原创 Python实战计划学习作业1-3

代码如下:from bs4 import BeautifulSoupimport requestsurls = ["http://bj.xiaozhu.com/search-duanzufang-p{}-0/".format(str(i)) for i in range(2, 5, 1)]urls.insert(0, "http://bj.xiaozhu.com/")max_of_pages

2016-11-14 22:45:35 3280

原创 Python实战计划学习作业1-2

代码如下from bs4 import BeautifulSouphtml_path = "/Users/reed/Documents/dev/Plan-for-combating/week1/1_2/1_2answer_of_homework/index.html"with open(html_path, 'r') as wb_data: soup = BeautifulSoup(wb_d

2016-11-12 22:54:02 464

原创 Python实战计划学习作业1-1

不是学习Python的第一天,跟随教程做了如下网页,问题来了,为啥中央3个图片不是居中的,右侧有多余空白。代码如下<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Hello World!</title> <link rel="stylesheet" type="text/css" hr

2016-11-09 21:50:46 410

原创 比较时间字符串的问题

最近做Web UI方面的测试,遇到个问题:某设备界面有一个开机时间显示 - “Uptime: 9minutes 21seconds”,这里添加一个测试需要比较刷新变动之后的Uptime比之前的Uptime多,比如之前是9minutes 21seconds,后来是9minutes 23seconds,后来的时间应该比之前的晚/多。这里涉及到时间字符串转换的问题,找了半天,最后

2016-08-29 16:36:14 1268

原创 最近的总结

最近接触到不少新东西, 很想写博客记录下来,先写列表,晚上回去继续1. Selenium WebDriver的企业应用2. Jenkins自动化部署3. Java的深拷贝4. Selenium中,获取List列表后,页面刷新后导致原来的element引用失效的问题5. Junit4里的Category来处理test分类的问题6. Intel IDEA的导入项目问题

2016-04-08 11:50:38 276

原创 在Mac上用Eclipse + Maven配置Selenium WebDriver开发环境

Selenium官网上建议用Maven部署selenium webdriver开发环境,今天在Mac上照做了一遍,现记录一下。Step 1. 去Eclipse官网下载Eclipse IDE for Java EE Developers的Mac 64位版本并解压到Mac的Application目录,该版本自带Maven插件,方便后面操作。Step 2. 开启Eclipse

2015-01-31 23:38:09 1929

原创 输出字符串出现频率最高的字母,用到了list中的排序和Iambda

看到老王Python上的一篇有关Iambda的文章http://www.cnpythoner.com/post/140.html,其中提到一题目 - 输出a字符串出现频率最高的字母,代码如下:a = "aAsmr3idd4bgs7Dlsf9eAF"l = ([(x,a.count(x)) for x in set(a)])l.sort(key = lambda k:k[1],rever

2014-12-25 00:06:03 896

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除