一. 做web自动化,想到以下三种自动化方式,各有优缺点
1.基于UI的自动化,优点:简单,有很多可借鉴的材料。缺点:非常不稳定;过于依赖界面,一旦界面发生变动,需要重新写;由于不稳定,受影响因素太多,维护成本大
2.基于web接口的测试,优点:比基于UI的方式稳定很多。缺点:可借鉴的材料不多,相对复杂;需要咨询开发对应的请求URL;请求结果不好解析,需要研究
3.基于开发的代码,也就是在开发项目上直接建立测试代码,也就是白盒测试,类似于单元测试。有点:非常稳定,可以深入开发代码逻辑进行测试。缺点:需要看开发代码,难度较大;对后台代码逻辑进行了测试,但无法测试前台请求;直接在项目上写测试用例,领导貌似不太愿意
基于以上分析,暂决定采用第二种方式进行。也就是在功能测试任务完成的前提下,利用课余时间研究研究,加油!!!开始啦
二. 自动化测试需要解决的几大问题:1)日志信息的完善、规范化,用例结果的定位就是通过日志,所以日志一定要规范化(通过打入日志可解决该问题);2)生成测试结果报告;3)所有的业务功能是否都适合使用发送http请求的方式,因为有的页面很复杂,请求报文参数很多;4)结果分析,因为发送http请求,返回的结果是html页面,要想个办法如何分析结果,准确的判断执行是否成功(BeautifulSoup 解析html可解决该问题)
三. 遇到问题,及解决方法
1.session的保持
s = requests.Session()
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')#cookie保留在s中
r = s.get("http://httpbin.org/cookies")#再次访问时会保留cookie
2.读取配置文件
配置文件server.con如下
[host]
settle_host = 192.168.2.15
settle_port = 5050
"""读取配置文件"""
cf = ConfigParser.ConfigParser()
cf.read("G:\PycharmProjects\jspt_test\conf\server.conf")
SettleIp = cf.get("host", "settle_host")
SettlePort = cf.get("host", "settle_port")
3.字符串去掉最后一个字符,例:
a = "abc"
b = [:-1]
结果:a:"abc" b:"ab"
datetim类型转化为str
recvmertime = '2017-10-10 09:32:29' #日期格式
str= recvmertime.strftime("%m%d%H%M%S") #转化为了字符串
4.python字典是无序的。。。
5.python解析html,用 BeautifulSoup。
http://www.cnblogs.com/twinsclover/archive/2012/04/26/2471704.html
6.执行sql insert delete update后要执行submit,否则不生效