自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 【转】SSH一些基本的包 (2011-12-11 11:40:30)

以下是比较新的SSH一些基本的包,基本上适用没特殊要求的项目.可能有些描述写得不对或者不好,请大家多多指点指点.commonscommons-digester-2.0.jar基于规则的XML文档解析,主要用于XML到Java对象的映射commons-io-2.0.1.jarstruts2信息传输commons-fileupload-1.2.2.jar

2016-08-12 11:30:55 793 1

原创 python中序列化之json文件的使用

json是通用的序列化模块,几乎所有的编程语言都有json模块,且序列化和反序列化的规则是统一的。因为文件的读写只能进行字符串或比特类型的操作,其他类型只能转换为字符串或比特类型,想要使用时再转换回原来的类型,转换的过程非常复杂。注意:和json不同的是,pickle.dumps()返回的是比特类型,load()函数也只支持对比特类型进行反序列化。同时,json也是一种文件格式,.json文件中的内容都是字典通过json序列化之后的内容。数字类型、字符串类型、列表类型、元组类型、字典类型【最常用】

2025-01-02 21:26:26 376

原创 python中datetime模块时间的使用

datetime类型是一个比较综合的类型,它下面有子包datetime.date专门用来表示日期,datetime.time专门用来表示时间,而datetime.datetime就表示日期时间,其中还有datetime.datetime.now()和datetime.datetime.today()来表示当前时间,这点和time.time(), time.localtime()表示当前时间是类似的。1. datetime.date():这是一个构造函数,需要传参年,月,日的值来构造一个日期。

2025-01-02 14:14:22 474

原创 python中os和sys模块的使用

如上可知,test2文件夹是目录,不是文件,所以os.path.isfile('test2')返回False. 其中os.path.split()是以给定路径最后一级为基准去分割,结果是返回2个元素组成的元组。如上,使用os.removedirs('test2')删除非空文件夹test2时,报错了,从报错信息得知,removedirs()方法最终调用的还是rmdir()方法,所以因为test2非空,所以无法删除。如上,如果已存在的文件路径,再创建文件,那么会报错’当文件已存在时,无法创建该文件。

2025-01-01 21:10:10 959

原创 python读写文件的三种做法

4.异同点与最优选择:open()和os.open()函数不会自动关闭文件,而with open()语句会自动关闭文件,不会造成资源泄露的问题。2. os.open(): 用于比较低级的方式去读取文件,是python的os模块提供的函数,以文件路径和模式为参数,返回文件描述符。对于文件操作,python提供了3种做法:open(), os.open() 和with open()语句。1. open()函数:一般用于更高级的文件读写操作,即人能读懂的用法,如果是写入数据,可用传入字符串。

2024-12-30 21:43:27 1064

原创 python的*args和**kwargs

args和**kwargs就是表示传参是不定长度的。举例2:函数接受实参时,按顺序分配给函数形参,如果遇到带*的形参,那么就把还未分配出去的实参以元组形式打包(pack), 分配给那个带*的形参。举例3:如果把*args放在位置参数前面,需要将在参数传入时,明确定义 *args后面的位置参数定义,否则会报错。拆分参数:调用一个函数 **kwargs是把字典的键值拆成单个的,依次赋值给函数的形参。四、位置参数、*args, **kwargs的组合使用。位置参数、*args、**kwargs 三者的顺序。

2024-12-21 08:30:00 331

原创 python的is和==运算符

==运算符通过对象的__eq__方法(或等价地,对于某些类型,可能直接比较内部状态)来比较这两个对象的值,如果__eq__方法返回True,则认为这两个对象相等;否则,认为它们不相等。py中的每个对象都有一个唯一的标识符(通常是一个整数),称为id. 当创建新对象时,py会自动分配一个唯一的id. is运算符通过比较两个对象的id值来判断它们是否相同。从上面这个例子可以看出,a==b结果是True,a==c结果也是True,因为它们比较的是值,而a is b返回True,因为a,b指向内存的同一个对象,

2024-12-20 14:33:04 390

原创 python中sort()和sorted()

对于元素全是字符串的列表,可以使用长度对列表进行排序,但如果遇到int这样没有len()函数的元素,就会报错TypeError: object of type ‘int’ has no len()。在py中,排序经常用到的两个函数,一个是sort(), 一个是sorted(). 两者的使用是有一些差别的。sorted()函数对所有可迭代对象的排序返回的都是列表,如果想返回其他类型,可使用相应的函数去转换。1. sort()排序只对列表排序,且会改变原列表的元素顺序,因为不会创建新的列表,所以效率较高。

2024-12-19 19:41:03 381

原创 python中的break和continue

在python中,也设置了遇到某些情况是跳出循环还是终止循环的应对方案,那就是在循环体内写上break或continue. 老实说,这两个语句的设计的确给循环操作带来了不少新的变化,可以说像画龙点睛一样地能够帮助实现一些预期效果,着实不错。else语句:完整的循环都应该是有else语句的,只是我们平时一般用不到,哪怕不写也不会影响程序的运行,所以就省略,但是在某些特定的情况下,循环中的else大有用处。break,字面意思是终止,用在循环体内的意思是终止循环,跳出循环,不再执行循环。

2024-12-19 15:26:48 305

原创 pytest中使用conftest做测试前置和参数化

这里就结合pytest.mark.parametrize装饰器实现参数的传递,这里方法test_login_tai使用了两个fixture,一个是login, 一个是case_info, 两个fixture一块使用,既接收到了login返回的uuid,token, 又实现了测试用例的参数化。这是一个封装登录功能的fixture, 通过params=data先传入登录需要的用户名和密码数据,然后经过fixture实现返回uuid,token的功能。

2024-12-04 21:23:06 827

原创 pytest+allure生成报告显示loading和404

pytest+allure执行测试脚本后,通常会在电脑的磁盘上建立一个临时文件夹,里面存放allure测试报告,但是这个测试报告index.html文件单独去打开,却显示loading和404, 这个时候就要用一些办法来解决这个报告显示的问题了。当已经在之前用pytest -n auto --alluredir=allure执行完用例脚本后,用allure serve allure命令产生过allure报告后,单独打开index.html就会如上图显示loading, 404。这样自动打开测试报告。

2024-11-29 13:42:45 1013

原创 python中把字符串转换成字典

在python编程中,有时候会需要把字符串转成字典类型,比如从json字符串转成dict类型,以便于进行下一步的操作,或者把普通的不带{}的字符串转成字典类型,这些都需要按照一定的方法去做,才能给我们的编程工作助长一臂之力。总结,在实际学习和工作中,遇到要把字符串转换为字典的情况,要分情况进行转换。

2024-11-29 10:50:25 1034

原创 使用python的smtp和email模块发送邮件

对于发送附件的邮件,附件对象filemime要设置2个头部,Content-Type, Content-Disposition, 前者是内容类型,后者是在邮件附件里显示的名字,通过filename去定义。总结:用python发送邮件,支持多种不同类型的邮件,有纯文本,有带html 或者压缩文件,当然其他的pdf, xlsx, doc文件作为附件也能发。发送邮件的整个过程是:连接邮箱服务器-->登录邮箱-->准备邮件数据-->添加邮件数据到邮件对象-->发送邮件。运行发送邮件代码后,邮箱收到了有附件的邮件。

2024-11-28 15:25:13 852

原创 python中time模块有关时间的操作

总之,python对日期时间的处理也是用了好几个模块,对于不同时间类型的转换也都提供了方便快捷的方法,当然每个模块的学习都需要花费时间和精力来熟悉和熟练掌握,加油,在python的学习之路上又迈出了扎实的一步。用time.mktime()这个方法传参时间元组,就能把时间元组转换成时间戳了,不过是带1位小数点的时间戳,需要用int()强转成整型类型。用time.strftime(format, localtime) 方法传参格式化的字符格式和时间元组,就能把时间变成指定格式的字符串时间。

2024-11-26 11:06:54 760

原创 python向mysql写入数据踩的坑

这里出问题的地方就是这个sql语句,我犯的错误是 我认为数据库里用的是datetime类型的数据,所以在sql语句中传数据的部分只用了%s,因为认为datetime日期时间类型不是字符串,结果怎么运行代码,数据库就是写入不了数据。后来,从发消息给我的专栏作者中找了一个大佬,加了他的微信,他通过了,然后付费问了大佬,才知道是格式化没做对,就是。今天,尝试用python向mysql数据库中写入数据,没想到被一个日期的格式问题给拦住了去路,最后请教了个专业大佬才解决。,我照做了,结果就写入成功了。

2024-11-25 19:45:36 361

原创 requests+openpyxl进行接口自动化测试

空密码用单引号来表示,因为excel表格对文本类数据会默认前面有个单引号,所以实际不聚焦单元格的话,显示的是单个单引号,接口读取的也是单个单引号,接口返回’登录失败,密码错误‘,测试用例的设计是,空用户名和正确的密码,当空用户名用双引号表示时,调用代码发送请求,竟然得到了如下的结果;把空用户名的空值用不填数据来表示时,接口读取的是None, 但解读为’账户不存在‘,这会不会影响测试结果?基于excel表格的特征,我把空用户名或空密码这样的值用看起来是两个单引号的方式表示,再次运行代码,

2024-11-20 11:34:09 128

原创 python文件操作出现的有关编码的问题

所以,gb18030和unicode+utf-8是不同的字符表示方式,一个是中国制定的标准,一个是国际组织制定的标准。的解码(Decode)出现错误(Error)了,以gbk编码的方式去解码(该字符串变成Unicode),但是此处通过gbk的方式,却无法解码(can’t decode )。utf-8: 它是一种通用的全世界各种语言的编码,如果你的网站或文本包括多个国家的语言,那么建议选择utf-8编码。对于gbk编码格式,虽然它的功能少,仅限于中文字符,所以它占用的空间比较小,打开网页的速度比较快。

2024-11-19 12:33:45 98

原创 pytest结合allure做接口自动化

这是一个采用pytest框架,结合allure完成接口自动化测试的项目,最后采用allure生成直观美观的测试报告,由于添加了allure的特性,使得测试报告覆盖的内容更全面和阅读起来更方便。

2024-11-16 11:38:58 690

原创 使用pytest+openpyxl做接口自动化遇到的问题

如下图,断言部分,响应结果是如下的'msg': '客户端非法请求:token.len应该小于等于64,但现在token.len = 66’,和我们在excel表格中设置的assertFields中的值是一样的,但就是断言失败AssertionError。如上图所示,login这个fixture最终返回一个全局变量的字典,字典里保存uuid,token的值,这个值就是登录后的响应内容提取出来的,调用fixture的request参数实现了把接口响应内容的uuid,token保存到全局变量字典gv中。

2024-11-13 21:48:03 1167

原创 python中类的各种方法

python里,对于类的各种方法也有着自己的定义。和java类似,有静态方法,实例方法。但是不同于java的是,它有一个特殊的方法,叫类方法。前面讲过了,静态方法和java中的概念一致,直接使用类名.静态方法名去调用,在python中要由装饰器@staticmethod来注明。由上可得知,类也可以调用实例方法,传参类,则调用类的属性,打印出来的是类的属性。2. 如果方法内部既需要访问实例属性,又需要访问类属性,应该定义成什么方法?不管是调用类方法还是实例方法,都得用cls去调用。1. 类方法及其使用。

2024-11-08 11:30:08 66

原创 python中对字典的遍历

3. 使用enumerate()函数:可用于同时遍历字典的键和值,并提供索引。这对于需要记录元素的位置或索引的情况非常有用。2. 字典推导式:字典推导式是一种紧凑的方式来创建新的字典或从现有字典生成新的字典。python中,对字典的遍历很有用,平常编程中可能经常会用到。下面是几种常用的方法。iter()用于创建字典的迭代器,然后用next()函数逐个获取键值对。使用迭代器可以有效处理大型字典,不需要一次性把所有键值对全加载到内存中。在上面的代码中,使用字典推导式创建了新的字典,返回成绩大于80的学生。

2024-11-07 21:46:15 152

原创 python中类的属性和方法

python和java一样,是面向对象的编程语言。在python中,类的定义和java中类似,由关键字class来定义一个类,下面介绍一下python中类的情况,类中有属性(变量)和方法。把类方法中对self.name的调用去掉,重新运行。

2024-11-07 13:36:57 68

原创 python私有属性和私有方法

在python中,如果属性是私有的,以2个_开头,私有方法同样,如果是专有方法,则开头和结尾都是2个_。python可以自定义私有变量和方法,也可以定义专有方法【在特殊情况下或使用特殊语法时由python调用,不能像普通方法在代码中直接调用。类的私有属性不能在类的外部调用,只能在类的内部方法中使用,用self.__private_attrs, 私有方法也同样,只能在类的内部使用,不能在类的外部调用。如上图,__weight是私有属性,__hobby()是类的私有方法,如果要直接调用的话,会出错。

2024-11-06 21:57:48 81

原创 jmeter自定义函数

接下来把打包好的jar包放到${jmeter_home}/lib/ext目录下,重启jmeter,打开函数助手,可以看到有RandomMail这个函数在列。jmeter本身带有很多内带的函数,功能很强大,但是更强大的是,jmeter还可以扩展,让用户自定义函数。对以上代码按照自己的需求重构并打成jar包。下面来看下自定义函数是怎么做的。这样自定义函数就做好了。

2024-10-27 14:50:14 442

原创 jenkins邮件通知配置

使用jenkins做持续集成,或定时任务,都对测试执行工作非常有帮助。但完成这些工作后,用邮件通知相关责任人是jenkins的又一给力功能。然后,设置下邮件内容的类型,有两种,plain text: 只能发送文本内容,不能发送图片,视频等;, 并点击高级,添加一个账户,最后勾选Use SSL. 这里用的是163的邮箱,也可以用QQ邮箱。首先,打开管理jenkins, 配置下系统管理员的邮箱账号,这个也是默认发送邮件的邮箱。最后,到邮件通知,配好SMTP服务器,和默认邮件后缀,点开高级,添加一个账户,记住。

2024-10-25 08:45:00 223

原创 jmeter中csv data set config的Sharing mode和loop控制器结合使用

综上:在使用csv data set config做参数化的时候,不能忽略sharing mode【线程共享模式】的设置,配合loop控制器的使用,仔细地配置,以达到想要的结果。再次运行脚本,结果:并没有按照3*8=24的次数去循环运行,仍然是16个请求,第3个线程只读取了一条数据;再次运行脚本,看结果:因为循环次数是8,所以一共发送了2*8=16个,最后循环完14条数据,把最后一条数据又循环了2次。再次运行脚本,结果:这里的执行结果是3个线程每个线程都执行了8次,而且都是读取前8条数据,总共24次。

2024-10-22 11:01:11 508

原创 jmeter中请求参数:Parameters、Body Data的区别

使用Body Data时,Content-Type可传application/x-www-form-urlencoded或application/json,两者的区别是数据格式不同。. 使用Parameters时,Content-Type不传,默认为application/x-www-form-urlencoded, 若传application/json出错。详细来解释,post请求的参数有两种传递方式,一种是键值对的map格式,一种是json格式。精确的对于post请求的说法是,

2024-10-21 15:08:46 458

原创 jmeter中发送post请求遇到的问题

用jmeter发送post请求,把请求参数放在Body Data处,参数都写得正确,但没想到结果每次都报错,直接响应结果乱七八糟,改成用Parameters,反而不乱报错了。原来,不是参数化的请求,传参放到Body Data处jmeter不认,改到Parameters下,就可以了。现在,把请求中参数的位置改一下,改到Parameters下。这个响应结果也是错误的,好像发错了请求一样。再次运行脚本,这次运行成功了。实际上请求上传递参数都没错。另外一些请求也是这样。

2024-10-20 21:19:48 557

原创 jmeter中对于有中文内容的csv文件怎么保存

jmeter的功能很强大,但是细节处没把握好就得不到预期的结果。今天来讲讲有中文内容的csv文件的参数化使用中需要注意的事项。对于有中文内容,涉及到编码格式,为了让jmeter能正确地读取csv文件中的中文,需要把文件转码为UTF-8BOM格式。先新建一个excel表格,上面写上需要用到的各种字段。接着,打开文件->另存为->选择txt文件【选择文本文件】打开另存为的txt文件,遇到有双引号的,把双引号去掉。这样才能保证中文显示正确,不乱码。接下来,再另存为 所有文件,在。

2024-10-17 11:47:47 653

原创 jmeter中用csv data set config做参数化2

又思考了下,为了方便统一管理测试数据的参数化,对于需要使用加密函数的接口和不需要加密的接口用一个http请求去做参数化,能不能行?注意这里的测试数据,断言部分中因有逗号,之前是在数据前加单引号,现在不用加,也可以,只要allow quoted data设为True.【这个有点小疑惑吧,有的时候竟然不要加。其实是等于1后的逗号,测试数据里给错了,给的是中文的逗号,但实际上返回的结果里是英文的逗号,就是这么个细小的地方就导致了断言失败。看请求信息,加密函数在测试数据中,然后再调用过来,没法生效,反而报错。

2024-10-17 11:18:03 656

原创 jmeter发送post请求

在jmeter中,有两种常用的请求方式,get和post.它们两者的区别在于get请求的参数一般是放在路径中,可以使用用户自定义变量和函数助手等方式进行参数化,而post请求的参数不能随url发送,而是作为请求体提交给服务器。而在jmeter中,根据post请求数据的格式,分两种:map格式、json格式有两种发送post请求的方式。这种格式即参数名、参数值为键值对格式,请求的参数放在Parameters参数表中即可。2. post请求数据为json格式。1.post请求数据为map格式。

2024-10-17 10:23:58 1701

原创 jmeter用csv data set config做参数化1

这里,断言的字段,和断言的结果值都可以引用csv文件里的字段。在jmeter中,csv data set config的作用非常强大,用它来做批量测试和参数化非常好用。接下来,看个例子,csv data set config这个设置可以让参数调用在各个地方,包括断言内容。总结:csv data set config这个元件的功能很强大,能将参数化做到,用来做批量测试很好。csv文件的内容为:其中看到包括两列数据,一列是要断言的字段,一列是断言的结果值。其他的,如http请求上的字段,都可以参数化,如下图。

2024-10-16 21:52:40 685

原创 jmeter响应断言放进csv文件遇到的问题

于是,察看了相关的测试人员的解决方案,发现是jmeter本身对编码格式的设置导致了这一问题。这里的断言数据本来是下面正常显示的 客户端非法请求:username.len应该大于或等于1,但现在username.len=0这句,但实际为上面的乱码。但是再次实践,还是报错,问题出在csv文件的编码上,如果csv文件里有中文,它的编码就要改。这里又出现了另一个问题,即因为csv文件默认是以,来分隔数据的,这里只读取到有,的地方,,以后的文字就没再读。如上图,从csv文件读出的内容不再是乱码,而是正常的中文。

2024-10-16 11:27:26 649

原创 jmeter中设置属性值的注意事项

jmeter中,可以在beanshell sampler, jsr223 sampler中对变量、属性等做一些操作,使得测试脚本变得更有关联性和一致性,以便完成更好的测试工作。但是,在实际运用中,设置属性值经常会有些情况需要注意。不是我们以为的像java语言中去使用。在jmeter中,设置属性值都必须是String字符串类型的。

2024-10-14 19:08:54 447

原创 jmeter在beanshell中使用props.put()方法的注意事项

这里的原因是:我的思考:因为这里刚通过props.put()设置了属性,直接调用属性函数来取行不通,因为脚本的执行和debug sampler的执行走的是不同的路径。如果获取值时用到的属性和设置时用到的属性不一致,就会出现如下错误,未定义的参数currtime,它把currtime看成是一个变量参数,而变量是需要被声明定义的。这种设置属性的方式才是有效可行的,在用props.get()获取的时候,就用和用props.put()方法设置时用到的属性名一样的属性名去获取值才不会错。改过来,都不带双引号。

2024-10-14 11:43:37 727

原创 Jmeter中jsr223 sampler和beanshell sampler中有关属性值的获取的注意事项

当用props.setProperty()方法设置好'password'的值后,再用${__property('password')}方法去获取属性值,结果返回password这个键值,并没有返回对应的属性值。总结:${__property()}在JSR223 Sampler中获取属性值行不通,用props.getProperty()最稳妥,其次是${__P()}方法也行得通。都不识别通过props.setProperty()方法设置的属性值。使用props.get()方法是能获得设置的属性值的。

2024-10-04 21:43:06 655

原创 JMeter对jdbc request以及foreach和loop controller的使用

这里设计一个计数器,让它代表每行的行数,从1开始,get(${n})就是取第n行的数据,然后get("bookName")再取具体某个字段的值。这里for each controller中的input variable prefix还是要和前面的variable name一致。这样,就把foreach下的jdbc request的sql语句执行结果输出了出来。这里用正则提取器从jdbc request返回的result中提取想要的字段数据值。否则没法取回这里的jdbc request返回的结果。

2024-09-30 10:29:56 408

原创 无题--远离“热点文化”的污染

抵抗和远离不良“热点文化”的侵袭和污染,是每个向好好生活的人应当做的,而身份和地位比较高的组织和机构更应当主动不受其侵袭和侵染,具有主动远离和阻抗的自觉和意识,承担起相应身份的责任和担当。

2022-08-21 15:14:50 260

原创 沟通需要区别对待

沟通需要区别对待

2022-08-05 16:50:52 267

原创 十分担心外行人抢内行人的饭碗

入行需谨慎,千万莫入程序员这行

2022-07-27 21:00:53 254

java的.awt包和java.util包的区别

了解Java的不同包功能

2016-07-17

文件格式转换

用于将word转换成PDF,或者从PDF转换成word格式。

2015-12-14

firefox latest version browser

最新火狐浏览器版本,有需要的快来下载吧!

2015-12-14

apache tomcat 6.0

apache tomcat 6.0 软件包,新版本!官方包。官方包。官方包。

2015-12-10

selenium api

selenium introduction and usermanuals

2015-11-04

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

TA关注的人

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