下载, curl -O 难道不能用么
这 markdown 是够混乱的
帖子是真多,我是没能力辨识到底说的对还是不对
你们如此多的机型都不知道咋搞,那我们就跟没法活了;
只能放弃完美,黑下心来测试了
还有如此骚操作
懂了;靴靴;
预期结果
?还是遍历后不 crash,就认为达到测试目的了?看了看帖子,开始有一个地方没太想通,requests 在 post 提交 json 的时候不是该
requests.post(url,json='xxx',header={'Content-Type': "application/json"}
怎么
requests.post(url,data='xxx',header={'Content-Type': "application/json"}
也可以?当然 data 和 json 的实参类型不一样;
然后我做了个实验
去 github 上 clone requests 模块代码,clone 到 Download 目录;
去 requests-master/requests/adapters.py 第 435 行添加了print request.body
ta 就变成了这样
if not chunked:
print request.body # 这是我添加的
resp = conn.urlopen(
method=request.method,
url=url,
body=request.body,
headers=request.headers,
redirect=False,
assert_same_host=False,
preload_content=False,
decode_content=False,
retries=self.max_retries,
timeout=timeout
)
3.然后写了代码
import sys,os
sys.path[0:0]=[os.path.expanduser('~/Downloads/requests-master/')]
print sys.path[0]
import requests
print requests.__file__
url = "http://ivt3.hschefu.com:9199/login"
headers = {
'Content-Type': "application/json",
}
# 第一种方式
requests.request("POST", url, json={"data":
{"password": "12345678",
"username": "xiangjin"}
},
headers=headers)
# 第二种方式
payload = "{\"data\": {\"password\": \"12345678\",\"username\": \"xiangjin\"}}"
requests.request("POST", url, data=payload,
headers=headers)
# 第三种方式
requests.request("POST", url, data=payload)
输出是
/Users/yeap/Downloads/requests-master/
/Users/yeap/Downloads/requests-master/requests/__init__.pyc
{"data": {"username": "xiangjin", "password": "12345678"}}
{"data": {"password": "12345678","username": "xiangjin"}}
{"data": {"password": "12345678","username": "xiangjin"}}
所以基本断定这三种写法的效果是一样的,当然我推荐第一种;
至今仍看不懂 requests,我不会 py
然后连 charles 代理,一样的请求,只是第三种没有 headers 字段;
import requests
# 获取的是百度搜索页面上图标
r=requests.get('http://www.baidu.com/img/bd_logo1.png?where=super')
import io
i=io.BytesIO()
i.write(r.content)
from PIL import Image
image=Image.open(i)
image.save('captchaCode.png')
取验证码截图那是一种可推荐的方法;
那就是用例设计的太粗.
以上都在幻想中出现
另外对于失败性测试,一个用例应该只携带一个导致失败的因素,比如上传图片,你非要上传个 超过最大允许大小的被破坏的把后缀改成 txt 的图片文件 ...
看后台日志;
接口测试是测试环节,不看日志,不看库;基本瞎测
原则上:
1.每个用例是独立场景,要关闭浏览器;
事实上:
取决你的领导
用//定义正则的都是大神,像 10 楼
s='''<html>
<input type="hidden" name="_csrf" value="12345678-1234-1234-1234-123456781234" />
</html>
'''
import re
print re.search(r'name="_csrf" value="(.+)"',s).group(1)
又改的骚了点
def test(str_):
def test_(str_):
h,str_,t=str_[0],str_[1:-1],str_[-1]
return True if len(str_)==0 else (False if h!=t else test_(str_))
return False if len(str_)==1 else test_(str_)
import timeit
print timeit.repeat(setup="from __main__ import test",stmt='test("abba")')
我也不想写成这么骚的操作
def test(str_):
def test_(str_):
if len(str_)==0:return True
h,str_,t=str_[0],str_[1:-1],str_[-1]
return False if h!=t else test_(str_)
return False if len(str_)==1 else test_(str_)
print test('a')
print test('aBa')
print test('abba')