robotframework 接口测试+RSA加密

考虑到这里的图片无法放大,看不清,现有另一地址可以看:http://www.robotframework.net/?/article/138

https://testerhome.com/topics/11033

首先,实现RSA加密,需要用到pycrypto这个库,这个库又依赖openssl,所以需要先下载openssl,具体教程可以参考http://bbs.csdn.net/topics/392193545?page=1

安装完成后就可以安装pycrypto, pip install pycrypto ,如果报的错是VC++ ,那么就现在安装vc++在安装pycrypto ,https://www.microsoft.com/en-us/download/details.aspx?id=44266

java版的加密函数如下:

public static String sign(byte[] data, final String privateKey) throws Exception {
	byte[] keyBytes = Base64Utils.decrypt(privateKey);
	PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
	KeyFactory keyFactory = KeyFactory.getInstance("RSA");
	PrivateKey privateK = keyFactory.generatePrivate(pkcs8KeySpec);
	Signature signature = Signature.getInstance("MD5withRSA");
	signature.initSign(privateK);
	signature.update(data);
	return Base64Utils.encrypt(signature.sign());
}
具体的python函数如下:


在robotframework中导入自己写的py文件就可以调用sign了,但是这个签名结果后面多了一个‘=’,需要加一步替换,把=替换为空,



在python内置的base64库中,可以直接进行编码,base64.b64encode,但是编码后的数据可能会出现‘+’或者‘/’,这在rul中是不能作为参数的,而base64.rulsafe_b64encode则把‘+’或‘/’转换成‘-‘或者’_‘。具体编码函数看需求,如果是做url则必须用urlsafe

Base64是一种通过查表的编码方法,不能用于加密,即使使用自定义的编码表也不行。
Base64适用于小段内容的编码,比如数字证书签名、Cookie的内容等。
由于=字符也可能出现在Base64编码中,但=用在URL、Cookie里面会造成歧义,所以,很多Base64编码后会把=去掉,这也就是上面提到的为什么多了一个’=‘。



get。

接口测试第一步是创建session,第一个参数是alias,也就是命名,识别用的,第二个参数为url,第二行为rsa加密,看需要,第五行是创建头文件(具体参数看公司需求),第六行是参数变量,第八行即为连接api,第一个参数是alias,需要跟上面的保持一致,第二个参数是uri,第三第四为头文件跟参数变量


post

post跟get基本一致,在post需要注意接口传参是json格式还是普通格式(跟get一样),如果是json格式,则post request后面应该用data,如果是普通格式则用params



在我这里,rsa加密,如果参数是json格式,那么在加密的时候是不需要加参数的,参数直接在post request用data进行传输,数据在这里有一个需要注意的地方,那就是

{
  "accountNumber": "IFA20160701000000464",
  "corporateUserCode": 50,
  "investorPayId": 288,
  "merchantNumber": "IFA2017112100003",
  "password": "ifast123",
  "payMethod": 0,
  "purchaseFunds": [
    {
      "currency": "156",
      "fundCode": "040008",
      "investmentAmount": 10
    }
  ],
  "riskConfirmed": 1
}

json里面有没有出现数组,即有没有出现中括号’[’,‘ ]‘,有的话,需要先进行create dictionary 之后再进行create list,这样传输的数据才能正确。


时间戳:

获取当前时间的时间戳为:${date}  get time  epoch;get time 是内置库BuiltIn的关键字

把时间转成时间戳:${date}  Convert Date  2017-11-22 10:00:00 epoch;Convert Date是Date Time库的关键字

把时间戳转成时间:${date}  get time ‘空一格’ ${time};注意在空一格那位置上空一格。。



持续更新。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值